Странный эффект при выводе изображения
От: Evgi1980  
Дата: 25.07.07 06:25
Оценка:
В hBitmap — исходный цветной рисунок, с маской RGB(255,0,255)
В hDC — должны получить результирующее изображение.


HDC hMemDc = ::CreateCompatibleDC(hDc);
HDC hSrcDC = ::CreateCompatibleDC(hDc);
int cx = rect.Width();
int cy = rect.Height();

// create mono or color bitmap
HBITMAP hBm = ::CreateBitmap(cx, cy, 1, 1, NULL);
HBITMAP hOldBitmap1 = (HBITMAP)::SelectObject(hMemDc, hBm);
::PatBlt(hMemDc, 0, 0, cx, cy, WHITENESS);

BITMAP b;
GetObject(hBitmap, sizeof(BITMAP),(LPSTR)&b); 
HBITMAP hOldBitmap2 = (HBITMAP)::SelectObject(hSrcDC, hBitmap);

::TransparentBlt(hMemDc, 
            0, 
            0, 
            cx, 
            cy, 
            hSrcDC, 
            0, 
            0, 
            b.bmWidth, 
            b.bmHeight, 
            RGB(255, 0, 255));

::BitBlt(hDc, rect.left, rect.top, cx, cy, hMemDc, 0, 0, SRCCOPY);

::SelectObject(hMemDc, hOldBitmap1); 
::ReleaseDC(0, hMemDc);

::SelectObject(hSrcDC, hOldBitmap2); 
::ReleaseDC(0, hSrcDC);
...


Получается странный эффект зеркалирования. От чего он взялся и как от него избавиться?

Рисунок: здесь
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.