|
分類:[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」になってしまいます。
以上、よろしくお願い致します。
|