問題タブ [hbitmap]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
2799 参照

c - HBITMAPの表示

事前にお詫び申し上げます。私はcに不慣れで、自分が何をしているのか本当にわかりません。

Windows7およびcを使用してスクリーンショットをキャプチャして表示しようとしています。私はそれがばかげているように聞こえることを知っています、最終的に私は異なるプログラムでこれらの各機能が必要になります、画面をキャプチャするものはそれを表示するものに画像を送信しますが、今のところ私は両方を1つのプログラムで動作させることを試みています。これまでにまとめたコードは次のとおりです。

HBITMAPを表示する方法が見つかりませんでした。HBITMAPを表示するにはどうすればよいですか?

更新:DrawBitmapを追加しましたが、機能していません...次の出力が表示され、処理方法がわかりません。

'win_screenshot.exe':ロード済み'C:\ Users \ mbrooker \ Documents \ Visual Studio 2010 \ Projects \ win_screenshot \ Debug \ win_screenshot.exe'、シンボルがロードされました。'win_screenshot.exe':ロード済み'C:\ Windows \ SysWOW64 \ ntdll.dll'、PDBファイルが見つからないか開くことができません'win_screenshot.exe':ロード済み' C:\ Windows \ SysWOW64 \ kernel32.dll'、見つかりませんまたはPDBファイルを開く'win_screenshot.exe':ロードされた'C:\ Windows \ SysWOW64 \ KernelBase.dll'、PDBファイルが見つからないか開くことができません'win_screenshot.exe':ロードされた'C:\ Windows \ SysWOW64 \ user32.dll' 、PDBファイル'win_screenshot.exe'が見つからないか開くことができません:ロードされた'C:\ Windows \ SysWOW64 \ gdi32.dll'、PDBファイル'win_screenshot.exe'が見つかりませんまたは開くことができません:ロードされました'C:\ Windows \ SysWOW64 \ lpk.dll'、PDBファイル'win_screenshotが見つからないか開くことができません。ロードされたシンボル。'win_screenshot.exe':ロード済み'C:\ Windows \ SysWOW64 \ imm32.dll'、PDBファイルが見つからないか開くことができません'win_screenshot.exe':ロード済み' C:\ Windows \ SysWOW64 \ msctf.dll'、見つかりませんまたはPDBファイルを開く'win_screenshot.exe':ロードされた'C:\ Windows \ SysWOW64 \ apphelp.dll'、PDBファイルが見つからないか開くことができない'win_screenshot.exe':ロードされた'ImageAtBase0x4ab60000'、ロードは包含/除外設定により無効になっています。'win_screenshot.exe':アンロードされた'ImageAtBase0x4ab60000'プログラム'[1480] win_screenshot.exe:Native'がコード0(0x0)で終了しました。win_screenshot.exe':ロード済み' C:\ Windows \ SysWOW64 \ apphelp.dll'、PDBファイルが見つからないか開くことができません' win_screenshot.exe':ロード済み' ImageAtBase0x4ab60000'、インクルード/除外設定によりロードが無効になっています。'win_screenshot.exe':アンロードされた'ImageAtBase0x4ab60000'プログラム'[1480] win_screenshot.exe:Native'がコード0(0x0)で終了しました。win_screenshot.exe':ロード済み' C:\ Windows \ SysWOW64 \ apphelp.dll'、PDBファイルが見つからないか開くことができません' win_screenshot.exe':ロード済み' ImageAtBase0x4ab60000'、インクルード/除外設定によりロードが無効になっています。'win_screenshot.exe':アンロードされた'ImageAtBase0x4ab60000'プログラム'[1480] win_screenshot.exe:Native'がコード0(0x0)で終了しました。

0 投票する
1 に答える
738 参照

c++ - 既存の HBITMAP をデスクトップの背景としてリセットする (Win32)

デスクトップ上に透明なウィンドウを作成したいと考えています。
そのために、デスクトップの背景を持つ HDC を作成し (デスクトップの HBITMAP を作成して HDC に適用)、UpdateLayeredWindowを呼び出しました。

ここまでは順調ですね。パフォーマンスの問題については、この質問
と同じように、永続的な GDI+ オブジェクトを保持する必要があります。

最初の塗装の反復では、すべてうまくいきます。2 回目の描画では、HDC と HBITMAP が変更されていないため、既存の HDC に再描画します。つまり、二重の画像が得られます (背景は消去されません)。

これが私がやっていることのコード例です:

何か案は?

0 投票する
2 に答える
9630 参照

winapi - Windows GetDIBits 関数を使用してビットマップ ピクセル値を取得する

GetDIBits 関数を使用してビットマップのピクセルを取得しようとしています。私は Windows GDI/API について勉強したことがないので、最初の引数である HDC についてはよくわかりません。SO と Web で無数の投稿を検索しましたが、この特定のケースで HDC を初期化する方法に関する情報や例を見つけることができませんでした。ピクセル値をどこまで読んだかは次のとおりです。


解決:

ウェブをさらに精査した後、次のことをまとめることができました。

0 投票する
1 に答える
73 参照

c++ - DC を使用する場合、作業が終了した後で常にデフォルト オブジェクトを新しいオブジェクトに置き換える必要がありますか?

以下で作成された一時DCを使用するだけです:

次に、この一時 DC に画像を描画します。この DC でイメージを取得したいので、使用CreateCompatibleBitmap()して一時ビットマップを作成し、使用SelectObject()して DC でオリジナルを取得しHBITMAPます。

DeleteDC()元のビットマップを使い終わったら、元のビットマップを削除したいだけです。

これは間違っていますか?

DC を使用する場合、元のオブジェクトが新しいオブジェクトで作業を終了した後、元のオブジェクトを常に置き換える必要がありますか?

0 投票する
2 に答える
4480 参照

c# - C# から C++ アンマネージ コードにビットマップを渡す

ビットマップをアンマネージ C++ DLL に渡し、POINT 構造体を返すコードを C# で記述しようとしていますが、成功しませんでした。

インターネットで多くの調査を行いましたが、問題の解決に役立つ「Gotcha」の記事やコードが見つかりませんでした。

これまでに思いついた最高のものは、私の C# アプリによって呼び出されたマネージ C++ DLL でラップされたアンマネージ C++ DLL です。テストでは、整数などの単純な型を渡し、問題なく整数を返すことができました。今私が抱えている問題、ビットマップについて。

HBITMAP を (C# でビットマップの GetHBitmap() 関数を使用して) 渡そうとしましたが、コンパイル中に「パラメーター 1 を 'System::IntPtr' から 'HBITMAP' に変換できません」および「Class1.FindImage( void *, void *) は保護レベルのためアクセスできません。」

これが私のコードの一部です:

メインアプリ:

ImportWrap.h:

ImportWrap.cpp:

ImgFuncs.h

ImgFuncs.cpp

私は何を間違っていますか、それとも私のアプローチで完全に地図から外れていますか? 私がやろうとしていることをコーディングする正しい方法に関する提案を喜んで受け入れます。非常に高速に動作する別の画像内の画像を見つけるために使用される C++ コードがいくつかあります。残念ながら、C# でロックビットを使用しても、十分な速度ではありません。そこで、画像検索に C++ コードを利用したいと思います。

今後も問題が発生することは間違いありませんが、このつまずきを乗り越えることができれば、対処できる可能性があります。ご覧のとおり、私の C++ の知識は限られています。

0 投票する
1 に答える
283 参照

video - IGraphBuilderからHBitmapを取得する

IGraphBuilderからビデオをエンコードしようとしています。このため、HBitmapが必要になります。これを実行することは可能ですか?

PS IGraphBuilderにはすでにRenderFile関数があることは知っていますが、これは私の使用には遅すぎるので、H264でレンダリングすることもお勧めします

0 投票する
0 に答える
2500 参照

c# - HBitmap をアルファ チャネルを維持したまま Bitmap に変換

GoogleStack Overflowで検索していますが、実際の例が見つかりません。

HBitmap を Managed .NET ビットマップに変換する必要がありますが、次のコードではアルファ チャネルが保持されません

SO でこの回答を見つけましたが、うまくいきません。例では透明度を保持していますが、画像を Y 軸で 180 度反転させ、180 度回転させます。どうしてか分かりません。

この他の例は機能しているように見えますが、C++ です

誰かがこれを C# で動作させており、メモリ リークなしで非常に重要ですか?

前もって感謝します。


編集: @Hans Passant からのコメントについては、次のコードを使用して HBitmap を取得します (OS からサムネイルまたはアイコンを取得するためのシェル呼び出しです (Vista と Win7 のみ)。

0 投票する
1 に答える
743 参照

qt - QLabelに配置されたHBitmapを削除する

Qt GUIに一連のQLabelオブジェクトがあり、それらにHBITMAPオブジェクトを入力します。これらのHBITMAPはメモリ内のバッファであり、ディスク上には存在しません。

ここで、QPixmaps fromWinHBITMAP to create aQPixmapQLabelsetPixmap`which I can then pass to the関数を使用しsます。

さて、問題は、QLabelの現在の画像を別の画像で上書きするとどうなるかということです。画像はメモリに残りますか?削除されますか?

私のプログラムは約1時間実行した後、非常に大きな割合で成長するため、適切に削除されないのではないかと思います。(1.7GB)メモリ内。

変換を行うコードは次のとおりです。

0 投票する
3 に答える
3940 参照

c++ - jpegメモリバッファからHBITMAPを作成しますか?

JPEG 形式のバイト配列から HBITMAP を作成したいと考えています。

検索しましたが、ビットマップファイルからしか作成できません

誰かがそれを行う方法を教えてもらえますか?

0 投票する
1 に答える
3423 参照

c++-cli - HBITMAPからビットマップ(.NET)を作成する

私はC++/ CLIを使用していて、rawHBITMAPという名前hStripがあります。これをで表示する必要があるPictureBoxので、次の関数を見つけましたが、これにSystem::Drawing::Image::FromHbitmapは、rawを渡す前IntPtrに変換する必要があるのか​​、それともこのようにそれを渡すことを逃れることができますか?HBITMAPIntPtr

変換する必要がある場合、どのように変換する必要がありますか?私は実際にこの方法で変換を見つけていません。しかし、私はそれを別の方法で見つけました。