Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[WinAPI] Podwójne buforowanie

Ostatnio zmodyfikowano 2015-05-22 12:48
Autor Wiadomość
Mahir
Temat założony przez niniejszego użytkownika
[WinAPI] Podwójne buforowanie
» 2015-05-17 14:17:31
Witam

Mam tu taki kod troche przerobiony z http://cpp0x.pl/kursy​/Kurs-WinAPI-C++/Podstawy​/Bitmapy/182
C/C++
HBITMAP CreateBitmapMask( HBITMAP hbmColour, COLORREF crTransparent )
{
    HDC hdcMem, hdcMem2;
    HBITMAP hbmMask, hbmOld, hbmOld2;
    BITMAP bm;
   
    GetObject( hbmColour, sizeof( BITMAP ), & bm );
    hbmMask = CreateBitmap( bm.bmWidth, bm.bmHeight, 1, 1, NULL );
   
    hdcMem = CreateCompatibleDC( NULL );
    hdcMem2 = CreateCompatibleDC( NULL );
   
    hbmOld =( HBITMAP ) SelectObject( hdcMem, hbmColour );
    hbmOld2 =( HBITMAP ) SelectObject( hdcMem2, hbmMask );
   
    SetBkColor( hdcMem, crTransparent );
   
    BitBlt( hdcMem2, 0, 0, bm.bmWidth, bm.bmHeight, hdcMem, 0, 0, SRCCOPY );
    BitBlt( hdcMem, 0, 0, bm.bmWidth, bm.bmHeight, hdcMem2, 0, 0, SRCINVERT );
   
    SelectObject( hdcMem, hbmOld );
    SelectObject( hdcMem2, hbmOld2 );
    DeleteDC( hdcMem );
    DeleteDC( hdcMem2 );
   
    return hbmMask;
}
void Rgrafike( string sc, HWND hwnd, int X, int Y )
{
    HBITMAP hbmOld, hbmMaska, hbmObraz;
   
    hbmObraz =( HBITMAP ) LoadImage( NULL, sc.c_str(), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE );
   
    hbmMaska = CreateBitmapMask( hbmObraz, RGB( 0, 255, 0 ) );
    HDC hdc = GetDC( hwnd ), hdcNowy = CreateCompatibleDC( hdc );
    BITMAP bmInfo;
   
    GetObject( hbmObraz, sizeof( bmInfo ), & bmInfo );
    hbmOld =( HBITMAP ) SelectObject( hdcNowy, hbmMaska );
   
    BitBlt( hdc, X, Y, bmInfo.bmWidth, bmInfo.bmHeight, hdcNowy, 0, 0, SRCAND );
    SelectObject( hdcNowy, hbmObraz );
    BitBlt( hdc, X, Y, bmInfo.bmWidth, bmInfo.bmHeight, hdcNowy, 0, 0, SRCPAINT );
   
    ReleaseDC( hwnd, hdc );
    SelectObject( hdcNowy, hbmOld );
    DeleteDC( hdcNowy );
    DeleteObject( hbmMaska );
    DeleteObject( hbmObraz );
}

Gdy zaczynam wyswietlac animacje to obraz zaczyna mi migac.
Chcialbym do powyzszego kodu napisac podwojne buforowanie, niestety nie potrafie tego zrobic. Bylem na tej stronie http://cpp0x.pl/kursy​/Kurs-WinAPI-C++/Podstawy​/Animacja/183 ale nic mi to nie pomoglo.

Moglby ktos napisac mi gotowy kod albo wytlumaczyc o co chodzi?

Bardzo prosze o pomoc.
P-132398
Mahir
Temat założony przez niniejszego użytkownika
» 2015-05-22 12:48:37
moze ktos pomoc?
P-132598
« 1 »
  Strona 1 z 1