我正在使用 C++ GDI、StretchDIBits 在 DC 上绘制图像。
因为原始图像很大,需要高质量。我使用 HAFTONE 模式,在 DC 上绘制整个图像(缩放图像)似乎需要时间。
所以我决定使用 StretchDIBits 进行部分绘制。但是关于 StretchDIBits 有一个严重的问题。
我只能将整数中的矩形绘制到整数中的区域(宽度和高度,以及x,y的左上角都是整数)
::SetStretchBltMode(hdc, HALFTONE);
::StretchDIBits(hdc,
realDrawRect.left,
realDrawRect.top,
realDrawRect.right - realDrawRect.left,
realDrawRect.bottom - realDrawRect.top,
left,
top,
width,
height,
pImageDIB,
pImageHead,
DIB_RGB_COLORS, SRCCOPY);
如果,图像是 21 * 21 。我现在在 (20, 20, 60,60) 向 DC 画 (5, 5, 7, 7),下次我想在 (21, 20, 61, 60) 画。原图没有对应的位置。所以我只能画一个近似矩形到 DC。现在问题发生了,图像在颤抖!
我对这个问题很生气。我怎样才能避免晃动?