通知ICONINFO
には2つのビットマップが含まれています。私が正しく理解すれば、hbmMask
はアイコンのアウトラインで、同時に透明にする部分を指定し、hbmColor
はアイコンの実際の色であるHBITMAP
です。HBITMAPにアルファチャンネル情報が含まれていますか?
- https://msdn.microsoft.com/en-us/library/windows/desktop/ms648052(v=vs.85).aspx
- https://social.msdn.microsoft.com/Forums/vstudio/en-US/490fb15a-61a5-4a5d-a1a0-fed675975293/hbmmask-hbmcolor-in-iconinfo?forum=vcgeneral
だから、私の質問はhbmMask
が必要な理由、ありますか?アルファチャンネルの情報をhbmColor
の中に入れてみませんか?それらを1つのビットマップに結合することはできますか?
さらに、Gdiplus::Bitmap
はconstructor which accepts a HICONです。このGDI +ビットマップがアルファチャンネル情報を処理できることを意味しますか?
感謝:)
あなたは間違った質問をしています。はい、ビットマップはアルファチャンネルを保存できます。しかし、AlphaBlend(例外的に)を除いて、GDIはアルファチャンネルを尊重しません。本質的に、ビットマップはアルファチャンネルをサポートしますが、APIはサポートしていません。それに加えて、[アイコンファイルはアルファチャンネルのPNG画像を保存できます](https://blogs.msdn.microsoft.com/oldnewthing/20101022-00/?p=12473)ので、そこにマスクは必要ありません。 – IInspectable
@IInspectable質問は、実際にアルファチャンネルを尊重しているGDI +とタグ付けされています。アルファチャンネルをサポートするためにアイコンファイルにはPNG形式は必要ありません。アイコン内の任意の32 bpp画像は、アルファチャンネルを持つことができます。 PNGはオプションの圧縮用です。 – zett42
@ zett42:質問は、 'ICONINFO'、' HBITMAP'、 'HICON'について質問しています。それらはGDI +ではなくWindows APIのデータ型です。 32bppビットマップをアイコンファイルにダンプすることはできますが、[マスクを追加する必要があります](https://blogs.msdn.microsoft.com/oldnewthing/20101021-00/?p=12483/)あなたはアルファチャンネルを使用しています。これはアイコンファイルにマスクがないPNGアイコンとは異なります。 – IInspectable