Здравствуйте. Есть код
CDC memDC;
memDC.CreateCompatibleDC(pDC);
CBitmap *temp = memDC.SelectObject(m_Bmp);
TransparentBlt(pDC->m_hDC, x, y, dstX, dstY, memDC.m_hDC,
x1, y1, srcX, srcY, RGB(255,255,255));
memDC.SelectObject(temp);
он взят из MSDN для MFC, для чистого WinAPI код схожий. Собственно, что мы здесь видим? А мы здесь видим что
после того как объект будет отрисован, вызывается функция SelectObject чтобы... А вот для чего она вызывается?
Просто и без нее все работает нормально. Может быть она не нужна? Спасибо за ответы.
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте. Есть код
А>А> CDC memDC;
А> memDC.CreateCompatibleDC(pDC);
А> CBitmap *temp = memDC.SelectObject(m_Bmp);
А> TransparentBlt(pDC->m_hDC, x, y, dstX, dstY, memDC.m_hDC,
А> x1, y1, srcX, srcY, RGB(255,255,255));
А> memDC.SelectObject(temp);
А>
А>он взят из MSDN для MFC, для чистого WinAPI код схожий. Собственно, что мы здесь видим? А мы здесь видим что
А>после того как объект будет отрисован, вызывается функция SelectObject чтобы... А вот для чего она вызывается?
А>Просто и без нее все работает нормально. Может быть она не нужна? Спасибо за ответы.
Она здесь для того чтобы вернуть на место BITMAP который был в данном контексте устройства первоначально.
Здравствуйте, Аноним, Вы писали:
B>>Она здесь для того чтобы вернуть на место BITMAP который был в данном контексте устройства первоначально.
А>А без нее можно? Зачем все это делать?
CDC memDC;
memDC.CreateCompatibleDC(pDC); // создается контекст аналогичный pDC
CBitmap *temp = memDC.SelectObject(m_Bmp); // устанавливается вместо BITMAP, что в контексте был при создании,
// рабочий BITMAP - m_Bmp
TransparentBlt(pDC->m_hDC, x, y, dstX, dstY, memDC.m_hDC,
x1, y1, srcX, srcY, RGB(255,255,255)); // выполняем TransparentBlt, где контекст источник memDC.m_hDC
// и контекст приемник данных pDC->m_hDC
memDC.SelectObject(temp); // возращаем BITMAP, что был первоначально,
// для правильного удаления контекста.