| 分類:[C++/CLI]
Visual Studio 2010 WindowsXP SP3
質問させてください。
下記手順にて画像の「StretchDIBits(MFC)」による 拡大処理を行ったところアルファ値が全ピクセル0になってしまいました。 「StretchDIBits」にてアルファ値の画像を拡大することは可能でしょうか。
[C++/CLI]側 アルファ付画像を読み込む(Bitmap/Format32bppArgb) 「Bitmap」から「BitmapData」を取得し、「BitmapData」の「Scan0」を取り出す。 「Scan0」をMFC側に渡す。
[MFC側] 伸縮モードの変更「SetStretchBltMode(copyDC, HALFTONE)」 「Scan0」を「StretchDIBits」を使用して拡大 srcBMP.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); srcBMP.bmiHeader.biBitCount = 32; srcBMP.bmiHeader.biPlanes = 1; srcBMP.bmiHeader.biWidth = Width; srcBMP.bmiHeader.biHeight = Height;
StretchDIBits( copyDC, 0, 0, ZoomWidth, ZoomHeight, 0, 0, Width, Height, srcScan0, &srcBMP, DIB_RGB_COLORS, SRCCOPY );
「GetDIBits」を使用して拡大した画像配列を取り出し
dstBMP.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); dstBMP.bmiHeader.biBitCount = 32; dstBMP.bmiHeader.biPlanes = 1; dstBMP.bmiHeader.biWidth = ZoomWidth; dstBMP.bmiHeader.biHeight = ZoomHeight;
GetDIBits( copyDC, dstHBMP, 0, ZoomHeight, dstScan0, &dstBMP, DIB_RGB_COLORS);
「dstScan0」のRGBは設定されていますがアルファ値が 全ピクセル「0」になってしまいます。
以上、よろしくお願い致します。
|