0

IEツールバーを作成しました。静的コントロールを使用してツールバーにアイコンを表示し、その上に画像を保持しています。

この静的コントロールは透明ではないため、このアイコンは背景色を表示しています(これはWindowsの一般的なコントロールのデフォルトの色です)。

ブラウザのテーマに関係なく、静的コントロールを透過的にすることは可能ですか。

プロジェクトはATLC++で開発されています。

静的制御のプロパティとしてWS_EX_TRANSPARENTを指定しようとしましたが、OnCtrlColorStaticイベントでnull_brushを返そうとしましたが、それでも問題は解決されません。

4

1 に答える 1

1

ATL についてはよくわかりませんが、標準の Windows API ではLoadImage関数を使用して画像を読み込みます。透明な部分 (透明な背景) を持つ画像を取得するためのヒントを次に示します。

  1. 画像には「キーカラー」が必要であり、画像内のその色のすべてのピクセルが表示時に透明になります。その色は、画像の左上にある最初のピクセルの色でなければなりません。特定のフラグを指定して LoadImage を呼び出すと (以下で詳しく説明します)、ウィンドウは画像を読み込み、左上のピクセルの色を読み取り、最初のピクセルと同じ色を持つ画像内のすべてのピクセルを非表示にします (透明にします)。

  2. LoadImage を呼び出す場合、3 番目のパラメーターは IMAGE_BITMAP または IMAGE_ICON でなければなりません。これは、イメージの表示に使用する GDI 関数 (アイコン関数またはビットマップ関数) によって異なります。また、カラー キーイングを適切に使用するには、最後のフラグに LR_LOADTRANSPARENT を含める必要があります。

  3. 上記のように画像を動的にロードすると、このリソースへのハンドルが得られます。このハンドルは、IMAGE_ICON フラグを使用してロードした場合の DrawIconEx など、標準の GDI 関数を使用して静的コントロールの表示コンテキストに動的に描画できます。

それが役に立てば幸い。

于 2009-12-16T15:33:09.447 に答える