3

指定された透明度レベルでネイティブ API イメージリストから 32 ビット イメージを描画する必要がありますが、それはできません。に渡された構造体のImageList_DrawIndirect呼び出しとILS_ALPHA画像の状態を使用していますが、期待どおりに動作しないようです。v6 の ComCtl はアプリに「添付」されているため、問題の原因ではありません。IMAGELISTDRAWPARAMSImageList_DrawIndirect

どうやってするか?

私のコードは次のようになります。

Dim idp As IMAGELISTDRAWPARAMS

idp.cbSize = Len(idp)
idp.himl = m_hIml
idp.hdcDst = hdc
idp.rgbBk = -1
idp.x = xPixels
idp.y = yPixels
idp.i = 0
idp.fState = ILS_ALPHA
idp.Frame = 128

ImageList_DrawIndirect(idp)

これは VB6 ですが、問題ではありません。実際、現時点では純粋な WinAPI のみを使用しています。

4

1 に答える 1

2

そのコードは、私のアプリで完璧に機能します。つまり、アプリに同じコードがあることを意味しますが、設定していないという唯一の例外がありますrgbBk

私の推測では、どういうわけか、画像リスト内の画像がアルファ チャネルを失ったのでしょう。

rgbBkアルファ付きの画像には影響がないと思うので、あなたが設定したことに驚いています。

于 2011-03-21T09:10:51.207 に答える