我使用Windows(均为7 & XP - 两个32位)和编码在C++StretchBlt收缩腐败
我接收来自外部源的位图。这些位图的分辨率是固定的(384x288)
我收到位图后,需要根据可变大小的布局调整它的大小,所以我正在使用StretchBlt来执行这些任务。
如果我将位图大小调整为更大的屏幕图像,这个效果很好。
但是,如果我将传入的位图缩小为放在屏幕上的较小版本,我会在图像上出现一些奇怪的“装箱”效果。
在以下示例中,三个面板中的每个面板的源图像都是相同的。但左边的两个(调整小一点)都对他们有拳击/线条效果。
对于实际StretchBlt电话,我这样做:
memcpy(at_TempPointer[PortNo], // Destination
(void *)VideoBufferAddress, // Source
FIXED_IMAGE_WIDTH * FIXED_IMAGE_HEIGHT * BYTES_PER_PIXEL // Number of bytes
);
StretchBlt(at_ImageDC[PortNo], // HDC Dest
0, // X Origin Dest
0, // Y Origin Dest
at_Width[PortNo], // Width Dest
at_Height[PortNo], // Height Dest
at_GhDC[PortNo], // HDC Source
0, // X Origin Source
0, // Y Origin Source
FIXED_IMAGE_WIDTH, // Width Source
FIXED_IMAGE_HEIGHT, // Height Source
SRCCOPY // Graphic Operation
);
但我想知道,如果可能的问题是在其他地方。
有没有其他人有过这种调整图像腐败的经验,知道我可以如何修复它?
是否做到这一点上你正在运行它所有的PC上?更改视频卡类型是否解决了问题? – Skizz 2012-01-31 12:56:13