問題タブ [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 に答える
1700 参照

c++ - ローカル リソースの代わりに FILE を使用するように PNG 読み込みコードを変更する

デスクトップにpngファイルを直接表示することを目的とした小さなソフトウェアに取り組んでいます。HBITMAP 構造体を使用して後半の部分を行う方法を見つけました。それでも、.PNG ファイルをそのような HBITMAP にロードする方法を探すのに何日も費やしました。

最終的に見つけたコード(コンパイルもできた)は、このページの次のコードです。

http://logiklabs.tumblr.com/post/22946728048/how-to-load-an-image-resource-into-a-hbitmap

それは完璧に機能すると思います。私の問題は、これが既に添付されている .png ファイルを使用することを意図していることです。

それでも、実行時に (コンパイル時に) 不明な場所からファイルを使用する可能性が必要です。

では、それを実現するためにそのスクリプトを変更するにはどうすればよいでしょうか? 残念ながら、私の C++ の知識は最高ではなく、これらの関連関数の MS ドキュメントも実際には役に立ちませんでした:/

とても感謝しています!

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

c++ - レイヤード ウィンドウに HBITMAP を描画します。どうしたの?

みなさん、こんにちは。

私の最終的な目標は、アルファを含む PNG ファイルを画面に描画することです。つまり、独自のウィンドウではなく、デスクトップのどこかに描画します。PNG を HBITMAP にロードする部分は動作するようになりました (別の方法でテストしました) が、アルファを含めて描画することができません。

私が聞いた限りでは、これを行う最善の方法は、レイヤード ウィンドウを使用することです。そのため、いくつかの例と小さなチュートリアルをやり直すために多くの作業を行いました。

次のコードは問題なくコンパイルされ、メッセージは表示されません (つまり、showError("#") 関数が呼び出されないことを意味します)。

それでも、画面には何も表示されません:/

長くなってすみません… 誰かが少なくともすぐにそれを見たいと思っています..

ちなみに、UpdateLayeredWindow で ULW_ALPHA の代わりに ULW_OPAQUE を使用すると、適切なサイズの黒いウィンドウが表示されるので、問題は PAINTSTRUKT または BitBlt 関数に関連する最小限のものでなければならないと思います..それでも、変更せずに多くの方法を試しました.

誰かが助けてくれることを願っています。事前にどうもありがとうございました!

0 投票する
5 に答える
13326 参照

c++ - 適切な方法で WinAPI HANDLE を閉じる (繰り返し閉じるのを避ける)

いくつかのハンドルがあり、それを閉じる必要があります。コードには、ハンドルが閉じられている可能性のある場所がいくつかあります。では、これはハンドルを閉じる正しい方法ですか?

ビットマップ ハンドルについて同じ質問があります。

編集:誤解があると思います。ハンドルCloseHandleを閉じるためのものです。ハンドルを閉じる正しい方法を知りたいです。ポインターの削除でも同様の状況が発生します。

したがって、次のコードは問題を意味します。

この場合、いくつかの回避策があります。bar&duck関数を次のように定義する必要があります。

したがって、foo を繰り返し削除することは避けます。問題は、ハンドルを閉じる適切な方法は何ですか? つまり、繰り返しハンドルを閉じる問題を回避するにはどうすればよいですか?

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

c++ - C++でCImageなしのJPEG/PNGへのHBITMAP

JPEG/PNGストリームまたはバイト配列に保存したいHBITMAPがあります。問題は、コンパイラとしてmingwを使用しているため、CImageを使用できないことです。これにより、作業が楽になります。

ビットマップから問題なくピクセルを取得できますが、JPEG/PNG形式でピクセルにアクセスする方法がわかりません。

どこから始めればいいですか?

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

c++ - レイヤードウィンドウからのHBITMAPの取得-誤ったデータ

サイズが約400X300ピクセルのレイヤードウィンドウ(WS_EX_LAYEREDを使用)を作成しました。( UpdateLayeredWindow
を使用して)ウィンドウを描画すると、すべてがうまく機能します。

問題は、ウィンドウを描画した後、ウィンドウのHBITMAPを取得できないことです。ウィンドウのHDCを介してHBITMAPを取得しようとすると、デスクトップ全体のサイズ(400X300ピクセルではなく1920X1080ピクセル)の空の(黒の)ビットマップが表示されます。

レイヤードウィンドウのHDC\HBITMAPを取得することさえ可能かどうか誰かが知っていますか?

コードサンプル

レイヤードウィンドウを描画する方法のコードは次のとおりです(これもうまく機能します)。

ウィンドウのビットマップをキャプチャしてファイルに保存する方法のコードは次のとおりです(注意:電卓などの「通常の」ウィンドウで機能します)

ありがとう!

0 投票する
5 に答える
23067 参照

winapi - HBITMAPからバイトを取得する

HBITMAPポインターが与えられ、アプリケーションがコンソールアプリケーションである場合、hbitmapからイメージバイトを取得するにはどうすればよいですか。取得できないHDCなどのパラメータを必要とするGetDIBitsを使用してみました。

編集:ファイルからビットマップをロードします:

HBITMAPを関数に渡し、処理された画像の別のHBITMAPを取得することを期待しています。

funcはどこにありますか:

そして問題は、HBITMAPから画像バイトを取得する方法です。

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

c++ - Win32 プロジェクトの *.bmp ファイルから HBITMAP を読み込みます

WINAPI 関数のみを使用して、*.bmp ファイルを Win32 プロジェクトの HBITMAP にロードすることは可能ですか?

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

c++ - HBITMAPからのQImage

Windows専用プログラムでは、を返すサードパーティのライブラリを使用していますHBITMAP

QImageその内容からを初期化する方法、つまりそれを?に変換する方法はありQImageますか?

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

c++ - ビットマップの配列をマネージC++からアンマネージC++に渡す方法

System::Drawing::Bitmaps私は現在、マネージC++コードのdllに配列を持っています。アンマネージ(ネイティブ)C++からマネージC++のメソッドを呼び出せるようにしたいと思います。問題は、配列をアンマネージC++に戻す方法です。

GetHbitmap()を返すマネージC++ビットマップを呼び出すことができますIntPtr。IntPtrの配列を渡す必要がありますか?これを行うための最良の方法はよくわかりません。明確にするために、私はこれを持っています:

マネージC++メソッド:

HBITMAPの配列ですか?もしそうなら、どのようにしてIntPtrhBmpをその配列に変換できますか?

マネージC++コードはすべてうまく機能し、ビットマップの配列を正しく取得します。しかし、アンマネージC ++がGetBitmapsメソッドを呼び出すときに、これらのビットマップをアンマネージC++に戻す必要があります。渡す必要のある変数のタイプがわかりません。渡したら、アンマネージC ++で使用できるタイプに変換するにはどうすればよいですか?

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

windows - QPixmapを使用せずにHBITMAPをQImageに変換します

セカンダリスレッドでWindowsからファイルのサムネイルを抽出していますが、出力はHBITMAPです。これをQImageに変換して、メインスレッドに送り返す必要があります。すでにご存知かもしれませんが、GUI以外のスレッドでQPixmapを使用すると、ランタイムエラーとコンパイル時の警告が発生します。私はそれを使おうとしたので知っています、そしてそれは私にランダムなエラーを与えました。

任意のアイデアをいただければ幸いです。