C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: アルファ付画像の「StretchDIBits」による拡大


(過去ログ 94 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■56431 / inTopicNo.1)  アルファ付画像の「StretchDIBits」による拡大
  
□投稿者/ こういち (1回)-(2011/01/13(Thu) 18:48:18)

分類:[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」になってしまいます。

 
以上、よろしくお願い致します。

引用返信 編集キー/
■56445 / inTopicNo.2)  Re[1]: アルファ付画像の「StretchDIBits」による拡大
□投稿者/ aetos (355回)-(2011/01/14(Fri) 01:58:39)
No56431 (こういち さん) に返信
> Visual Studio 2010
> WindowsXP SP3
>
> 質問させてください。
>
> 下記手順にて画像の「StretchDIBits(MFC)」による
> 拡大処理を行ったところアルファ値が全ピクセル0になってしまいました。
> 「StretchDIBits」にてアルファ値の画像を拡大することは可能でしょうか。

代わりに AlphaBlend 関数を使ってみてはいかがでしょう。
引用返信 編集キー/
■56482 / inTopicNo.3)  Re[2]: アルファ付画像の「StretchDIBits」による拡大
□投稿者/ こういち (2回)-(2011/01/14(Fri) 22:37:09)
No56445 (aetos さん) に返信
> ■No56431 (こういち さん) に返信
>>Visual Studio 2010
>>WindowsXP SP3
>>
>>質問させてください。
>>
>>下記手順にて画像の「StretchDIBits(MFC)」による
>>拡大処理を行ったところアルファ値が全ピクセル0になってしまいました。
>>「StretchDIBits」にてアルファ値の画像を拡大することは可能でしょうか。
>
> 代わりに AlphaBlend 関数を使ってみてはいかがでしょう。

お返事が遅くなりまして申し訳ありません。
「AlphaBlend 関数」を使用して、うまくいきました。
ありがとうございました。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -