我使用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