256x256ビットマップのTImageでStretched=Trueを使用しています。これは、1、2、4、または8だけ縮小されます。予想どおり、「1」から離れるほど、ビットマップ上のテキストはひどくなります。ただし、Windows 7エクスプローラーは、縮小されたバージョンのビットマップを「よりソフト」でより快適にレンダリングすることに気付きました。この方法でTBitmapを「ぼかす」ことは可能ですか?
6062 次
2 に答える
9
TBitmapではなく、TImageでStretched=Trueを意味していると思います。
残念ながら、TImageには、画像のサイズ変更に関して、リサンプラーが組み込まれていません。さまざまなリサンプラーをサポートしているため、 Graphics32を使用することをお勧めします(サイズを大きくするのに適しているものもあれば、サイズを小さくするのに適しているものもあります)
于 2010-05-07T12:20:28.243 に答える
9
HALFTONE StretchBltModeを使用すると、通常のストレッチドローよりもスムーズな結果が得られます。これは、Windows2000以降でのみ機能します
procedure SmoothResize();
var pt:TPoint;
h: HDC;
begin
h := imgMainPicture.Canvas.Handle;
// Previous call to StretchDraw
// imgMainPicture.Canvas.StretchDraw(Rect(0, 0, imgMainPicture.Width - 1,
// imgMainPicture.Height - 1), curPicture.AnnotatedBitmap);
// Normal StretchDraw uses STRETCH_DELETESCANS as StretchBltMode , HALFTONE should give better results
GetBrushOrgEx(h, pt);
SetStretchBltMode(h, HALFTONE);
SetBrushOrgEx(h, pt.x, pt.y, @pt);
StretchBlt(h, 0, 0, imgMainPicture.Width - 1,
imgMainPicture.Height - 1, curPicture.AnnotatedBitmap.Canvas.Handle,
0, 0, curPicture.Width,curPicture.Height,SRCCOPY);
end;
于 2010-05-08T08:57:37.383 に答える