【发布时间】:2011-06-05 06:00:01
【问题描述】:
我正在使用StretchBlt() 缩小图像。
http://img684.imageshack.us/img684/2152/stretchblt.png
如您所见,目前看来我必须在质量过滤和透明度之间做出选择。有没有办法两者兼得?这是我需要执行的唯一图像操作,因此我希望避免使用额外的库。
我的代码:
HDC srcDC = CreateCompatibleDC(NULL);
SelectObject(srcDC, *phbmp);
HDC destDC = CreateCompatibleDC(srcDC);
HBITMAP NewBMP = CreateCompatibleBitmap(srcDC,NewWidth,NewHeight);
SelectObject(destDC,NewBMP);
SetStretchBltMode(destDC,HALFTONE);
SetBrushOrgEx(destDC,0,0,NULL);
if (StretchBlt(destDC,0,0,NewWidth,NewHeight,srcDC,0,0,width,height,SRCCOPY) == TRUE)
{
DeleteObject(*phbmp);
*phbmp = NewBMP;
hr = S_OK;
}
else
DeleteObject(NewBMP);
DeleteDC(srcDC);
DeleteDC(destDC);
【问题讨论】:
-
您标记了 GDI+,但您没有使用其出色的大小调整过滤器?耻辱。
-
Hans 已经告诉你你叫什么了,你现在可以进行网络搜索了。
-
我在这里没有看到任何 GDI+,我怀疑输入了“gdi”,所以很有帮助地“建议”
gdi+。 -
是的,看来我正在使用 ye olde GDI(或者根本没有使用)。 GDI+ 看起来更有用,所以我会切换到它。
标签: c++ winapi gdi+ stretchblt