ページ 11

StretchBltで

Posted: 2011年7月29日(金) 10:31
by きのこのこのこ
マウス周辺をキャプチャして表示するプログラムを作っているのですがStretchBltで拡大、縮小表示しようとすると画像が粗くなります
これはやはりしょうがないのでしょうか?

コード:

GetCursorPos(&pt);
hWnd_Cap = GetCapture();
hdc_Cap = GetWindowDC(hWnd_Cap);
hdc = GetDC(hWnd);
GetClientRect(hWnd, &rt);

StretchBlt(hdc, 0, 0, rt.right, rt.bottom, hdc_Cap, pt.x - HalfWinWidth, pt.y - HalfWinHeight, rt.right * 1.25, (rt.bottom- 81) * 1.25, SRCCOPY);
HalfWinWidthとHalfWinHeightはマウスを中心にキャプチャするためにウィンドウの高さと幅の半分の値が入っています
上記の抜粋ソースでは1.25で縮小の時のものです

Re: StretchBltで

Posted: 2011年7月29日(金) 12:10
by へろりくしょん
SetStretchBltMode() 関数の第2引数に、HALFTONE を与えてみては。

それでも満足できなければ、DIB セクションでピクセルバッファを直接操作するしかないでしょうね。

Re: StretchBltで

Posted: 2011年7月29日(金) 12:11
by ookami
http://social.msdn.microsoft.com/Forums ... 47689d203/
ここによると、
SetStretchBltModeでバイリニアモードにすると、
拡大時には滑らかにできるようですが、
縮小時には難しいようです。

拡大してから縮小すると、多少キレイな結果が得られるそうですが、
すいません試していません^^;