StretchBltで

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
きのこのこのこ

StretchBltで

#1

投稿記事 by きのこのこのこ » 14年前

マウス周辺をキャプチャして表示するプログラムを作っているのですが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で縮小の時のものです

アバター
へろりくしょん
記事: 92
登録日時: 14年前
住所: 福岡

Re: StretchBltで

#2

投稿記事 by へろりくしょん » 14年前

SetStretchBltMode() 関数の第2引数に、HALFTONE を与えてみては。

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

アバター
ookami
記事: 214
登録日時: 14年前
住所: 東京都

Re: StretchBltで

#3

投稿記事 by ookami » 14年前

http://social.msdn.microsoft.com/Forums ... 47689d203/
ここによると、
SetStretchBltModeでバイリニアモードにすると、
拡大時には滑らかにできるようですが、
縮小時には難しいようです。

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

閉鎖

“C言語何でも質問掲示板” へ戻る