1
根據MSDN:StretchBlt()不創建鏡像
StretchBlt創建一個位圖的鏡像如果nWidthSrc和nWidthDest參數或者如果標誌nHeightSrc和nHeightDest參數不同。
所以我試着創建顛倒的圖像。我有一個類看起來像這樣:
class Picture
{
private:
HBITMAP bmp; //Bitmap
HDC pdc; //Device context
short int w; //Weidth of bitmap
short int h; //Heighth of bitmap
public:
short int x;
short int y;
void draw(HDC);
void upside_down();
}
,我有這樣的方法:
void Picture::upside_down()
{
HDC dc = CreateCompatibleDC(pdc);
HBITMAP bmap = CreateCompatibleBitmap(pdc, w, h);
SelectObject(dc, bmap);
BitBlt(dc, 0, 0, w, h, pdc, 0, 0, SRCCOPY);
StretchBlt(pdc, 0, 0, w, h, dc, 0, 0, w, -h, SRCCOPY);
DeleteDC(dc);
DeleteObject(bmap);
}
,但它不工作,沒有任何反應。我不知道這是否與DC兼容性有關,我總是在理解背後的邏輯時遇到問題。
那麼,我該怎麼做才能讓我的位圖翻轉?
彈射邏輯看起來正確。通過「*沒有任何反應*」,你的意思是根本沒有圖像?沒有負高度的圖像也沒有?大概你還有其他的錯誤... – mark
那麼當我試圖改變一些參數,例如,完全黑暗的圖像。我用我的代碼顯示的這些參數似乎是正確的,但不是翻轉的圖像,我始終得到相同的圖像,保持不變。 – PookyFan