ZUHÜLF! windows-redraw-stress



  • Hallo!

    Ich habe in einem kleinen windowsprogramm in der WinMain mit der API routine ,,SetPixel '' in meinem ,,DC'' rumgemalt. Ich möchte jetzt, das die grafik beim resize oder so nicht verloren geht, dazu muss das fenster neu gemalt werden. ich möchte jetzt aber nicht in dem messagehandler WM_REDRAW die ganze grafik neu berechnen! wie kann ich das machen?

    hier die malerei in der winmain

    hDC = GetDC(hwnd);
    // rechnerechne
    SetPixel2(hDC,x,y,farbe); // usw
    ReleaseDC(hwnd, hDC);

    danke für hilfe



  • Du malst in ein in einen Memory-DC selektiertes Bitmap und blittest es wenn du es brauchst.

    Greetz, Swordfish



  • ich verstehe nicht!



  • Mit

    SetPixel2(hDC,x,y,farbe);
    

    "malst" du ja deinen Pixel an die Stelle x,y auf das Front-hDC, sprich das was du direkt auf dem Bildschirmausgibst....
    stattdessen kannst du dir ein zweites hDC, zb. hDC2 erstellen und zeichnest dann darauf herum und anschließend gibst du alles aus...
    Wenn dann WM_REDRAW auftritt kannst du das hDC2 einfach ausgeben und somit geht nichts verloren....

    MfG Kuldren



  • sorry, bin neu in windows-

    wie gebe ich das ,,hdc2'' aus?



  • sorry, bin neu in windows-

    ->?

    @topic
    Indem du mit BitBlt das hDC2 in das hDC bltest

    Die MSDN kennst du aber oder?

    MSDN->BitBlt:

    BitBlt(hDC, 0, 0, width, height, hDC2, 0, 0, SRCCOPY);



  • primatenreflexe schrieb:

    sorry, bin neu in windows

    Was trotzdem keine Ausrede für Dumm- oder Faulheit ist. f'`8k

    Autocogito

    Gruß, TGGC (\-/ returns)


Log in to reply