Re[2]: Как сделать Дублирующий Буфер для вывода текста
От: Alex Smirnov Россия  
Дата: 01.08.02 08:05
Оценка:
Здравствуйте PSP, Вы писали:

PSP>Здравствуйте maslukov, Вы писали:


M>>Здрасьте!


M>>Хочу чтобы TextOut и пр. выводилиси не в экранный DC а в память.

M>>Для этого я создаю compDC=CreateCompatibleDC
M>>Далее для TextOut-а использую compDC.
M>>( Причем без всяких BeginPaint и EndPaint)...

M>>Длаьше просто нужно сделать BitBlt? и вызвать InvalidateRect?


PSP>memDC.CreateCompatibleDC(&dc);

PSP>bmpDC.CreateCompatibleBitmap(&dc,rect.Width(), rect.Height());
PSP>CBitmap * pOldBitmap=memDC.SelectObject(&bmpDC);
PSP>pDC=&memDC;

PSP>Рисуешь.


PSP>dc.BitBlt(0,0,rect.Width(), rect.Height(),pDC,0,0,SRCCOPY);

PSP>memDC.SelectObject(pOldBitmap);

Либо без mfc:
    HDC hMemDC = CreateCompatibleDC(hDC); 
    if(hMemDC == 0) return;
    HBITMAP hBmp = CreateCompatibleBitmap(hDC, wid, hei); wid/hei -> размеры
    HBITMAP hOb = HBITMAP(SelectObject(hMemDC, hBmp));

    // тут делаешь что вздумается...

    BitBlt(hDC, rc.left, rc.top, wid, hei, hMemDC, rc.left, rc.top, SRCCOPY);
    // rc -> RECT настоящего DC

    SelectObject(hMemDC, hOb); 
    DeleteObject(hBmp); 
    DeleteDC(hMemDC);


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