問題タブ [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.
c++ - MFC での CreateDIBSection とピクチャ コントロールを使用したレンダリング
呼び出しを使用して、MFC で DIB セクションを作成していますCreateDIBSection
。HBITMAP
MFC プロジェクトの別のダイアログに渡す呼び出しから取得します。他のダイアログでは、CStatic::SetBitmap(HBITMAP)
呼び出しを使用してビットマップをレンダリングしています。しかし、なぜか何も見えない。これが同じダイアログで行われる場合、これは完全に正常に機能しますが、あるダイアログでビットマップを作成し、別のダイアログで表示したいと考えています。
DIBSection を作成するためのコードは次のとおりです。
これで私を助けてください。HBITMAP
ハンドルの使用に制限はありますか?
c# - C# - ネイティブ HBitmap から JPEG エンコードされたストリーム、透過性、逆さま
私の最終的な目標は、次のコードを使用して Windows Thumbnail Cache から取得した HBitmap を配置することです。
JPEG でエンコードされたストリームに変換し、ネットワーク経由で送信します。
私の最初の試みは を使用することでしたImage.FromHBitmap()
が、これはアルファチャンネルを無視します。この質問を参照してください:
Use native HBitmap in C# while preserving alpha channel/transparency
明らかに解決策は、ネイティブ ビットマップのデータを使用する新しいビットマップを作成することです。しかし、他の質問に対する Hans の回答のコメントを確認してください。回転する必要があるかどうかを判断する可能性はありますか? (Davidのコメントへの回答はなく、そこにコメントすることはできません...)ビットマップデータは上下逆に保存されるのが通常であり、ストライド値は負になることを何度も読みました。オブジェクトのすべてのフィールドをチェックしNativeMethods.BITMAP
ましたが、通常の画像と逆さまの画像で違いはありません。したがって、別の解決策があるはずです。
また、別の問題もあります。ビットマップを で JPEG ストリームに保存すると.Save(somestream, ImageFormat.Jpeg)
、画像の透明な部分を通して輝く背景が白くなりますが、黒にしたいのです。
前もって感謝します!
winapi - SetBitmapBits が Window で Captured HBITMAP を設定しない
画面の 500x500 HBITMAP を 0x0 (左上) から取得し、ウィンドウに描画したいと考えています。これが私のコードです。SaveBitmap()
HBITMAP とその作業中の Fine を保存します。
問題は、キャプチャされた画像が Window.Where に描画されていないことです。
c# - hBitmap をビットマップとして保存するときの汎用 GDI+ エラー
私は独自の DIB/BMP デコーダーを作成しています (既に他のデコーダーがあることは知っていますが、画像処理について学んでいます)。ピクセルをポインターに格納し、hBitmap を書き込むための関連するサイズを取得することができましたが、このエラー上がり続ける:
以下は、スタック トレースとコードです。
コード:
何が問題なのかわかりませんが、PCX ファイルに同様の関数を使用すると、正常にレンダリングされるモノクロ画像以外はすべて失敗します。誰かが助けてくれるなら、私はとても感謝しています。
c++ - HBITMP の Windows 関数 DestroyObject がうまく機能しない (メモリ リーク)
C++ プログラムで頻繁に HBITMAP イメージを作成する必要があり、もちろん使用後にこれらのビットマップを削除する必要があります。コードはこれに似ています
HBITMAP を継続的に作成し、このビットマップを使用する関数を呼び出してから削除するスレッドに無限サイクルがあります。ループの開始時に、プロセスのメモリ使用量が前のサイクルよりも大きいかどうかを確認し、大きい場合は出力します。CreateBitmap() および DeleteObject() を使用すると、わずかなメモリ リークが発生します。プロセスのメモリ使用量が時々 4KB 増加します (10 秒ごとの場合もあれば、数分間何も起こらない場合もあります)。
私もプロセス関数を呼び出さずにテストしましたが、まだ問題があるので、ビットマップの処理が原因だと思います。さらに、別のテストを行い、無限ループの外側でイメージを作成し (したがって、1 回だけ作成します)、ループ内で無限回処理しましたが、メモリ リークは発生しませんでした。
注: DeleteObject() は常に値 >0 (エラーなし) を返します。
問題が DeleteObject() 関数に関連している可能性はありますか? この方法でビットマップを作成/削除すると何か問題がありますか?
テクニカル ノート: Windows XP Borland C++ Builder 5
winapi - GetBitmapBits でビットマップ情報を取得するときの HBITMAP のピクセル形式は何ですか?
私は HBITMAP hBitmap を持っています。GetBitmapBits(hbitmap, width * height, buffer); を使用します。
バッファに書き込まれるピクセル形式は何ですか?
ありがとう。
c++ - glReadPixels からの HBITMAP の作成
glReadPixels() 呼び出しによって返されたデータから HBITMAP を作成する必要があります。
私は使用してみました:
そして、それは mspaint OK に貼り付けられます (したがって、データは良好です)。
c++ - GDI C/C++ - 既存の HBITMAP への BITMAP
デバイス コンテキストと互換性のあるビットマップを作成し、取得したハンドルを BITMAP 構造体に関連付けるにはどうすればよいですか? 私が書く場合:
hdc と互換性のある HBITMAP ハンドルが作成され、新しい HBITMAP (ビットマップ データで満たされた) が初期化されますが、互換性は維持されません。BITMAP から HBITMAP を作成するのではなく、初期化された HBITMAP を既存の BITMAP ソースで埋める機能はありますか?
c++ - HBITMAP メモリ リーク
どんなに調べても、何を試しても、このコードがリークしている理由を見つけることができませんでした。実際、リークについてはわかりませんが、このコードを使用するたびに GDI オブジェクトの数が増加します。
ツールを使用して GDI オブジェクトをチェックしたところ、HBITMAP hBmp がリークしていることがわかりました。どのように削除すればよいですか?
DeleteObject が機能していません。
ありがとう
c++ - 透明度/アルファチャンネルを追加する HBITMAP
hbitmap オブジェクトに透明度を追加しようとしていますが、何も描画されません:/
これは、ハンドルを描画するために使用するコードです
これは、hbitmap にアルファ チャネルを追加するコードです。
編集:
これは、後でいくつかのコードでピクセルデータを入力するビットマップを作成する方法のコードです