掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
CImageのAlphaBlendの結果の疑問 (ID:66551)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
(XP・VC2005・MFC) 以下のソースで処理を行ったところ、結果のResult.bmpは、全部RGB(4,4,4)になってしまいました。 透明度をいじっても同じ結果になりました(ただ、255のときだけRGB(0,0,0)になりました)。 黒地に、黒色の半透明を重ねても、結果は黒になると思っていたのですが、これは何故なのでしょうか? #include "atlimage.h" void CimagetestDlg::OnBnClickedButton1() { // GryaScaleパレット RGBQUAD rgb[256]; for( int i = 0 ; i < 256 ; i ++ ){ rgb[i].rgbBlue = i; rgb[i].rgbGreen = i; rgb[i].rgbRed = i; rgb[i].rgbReserved= 0; } CImage Img1,Img2; Img1.Create( 1024,100,8); Img1.SetColorTable(0,256,rgb); Img2.Create( 1024,100,8); Img2.SetColorTable(0,256,rgb); CRect rec; rec.SetRect(0,0,1024,100); HDC hdc1 = Img1.GetDC(); HDC hdc2 = Img2.GetDC(); FillRect( hdc1 ,&rec , (HBRUSH)GetStockObject(BLACK_BRUSH)); FillRect( hdc2 ,&rec , (HBRUSH)GetStockObject(BLACK_BRUSH)); Img2.ReleaseDC(); // Img2のDC開放 Img2.AlphaBlend( hdc1 , 0 , 0 , 128 , AC_SRC_OVER ); Img1.ReleaseDC(); Img1.Save("c:\\Result.bmp"); Img1.Destroy(); Img2.Destroy(); }
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.