Double Buffering



  • hallo zusammen wie zeichnet man ein bitmap in ein bitmap in eine bestimmte position, also z.b ich habe ein schwarzes bitmap das das der hinergrund ist und auf das wird gemalt aso das heisst auf dieses kommen dann andere verschiedene Bitmaps.

    Meine frage konkret wie bring ich ein anderes bitmap auf das andere damit sich die bitmap die sich bewegen sollen auf dem grundbitmap bewegen?
    z.b durch pfeilbewegung!



  • Du kannst eigentlich einfach die verschieden Memory-DCs aufeinander drauf blitten 🙄



  • wie würde denn das gehen?

    wenn ich zwei selectobjects habe wird immer der zuletzt augerufene gweählt?



  • Du machst erst für jedes Bitmap ein MemoryDC und selektierst es da hinein - anschließend kannst du die Sacehn dann auf deinen DC oder in einen anderen MemoryDC blitten 😉



  • kannst du mal ein kleines beispiel zeigen?

    mit vielleicht zwei bitmaps ?

    wäre sehr liebenswürdig von dir
    😋

    dankeschön im voraus



  • Nicht mehr vor dem Schlafen gehen 😉
    Ich verstehe aber nicht so ganz, wo dein Problem liegt. Ob du jetzt ein oder mehrere Bitmaps hast, machst doch keinen großen Unterschied - nur dass du eben mehrere DC erstellst 😉



  • flenders knows it all, way to go buddy 👍



  • Falls du doch noch ein kurzes Beispiel brauchst, sag Bescheid 🙂



  • danke viel mals !

    ich habe es selbst geschafft

    und so sieht es aus

    FillRect(hdcfeld,&rect,GetStockObject(WHITE_BRUSH));
    		SelectObject(hdcfeld,hbitmap);
    
    		SelectObject(hdcjet,globtmp.jet.hbitmap);
    
    		BitBlt(hdcfeld,globtmp.jet.rcpaintpos.left,globtmp.jet.rcpaintpos.top,globtmp.jet.jetbreite,globtmp.jet.jethoehe,hdcjet,0,0,SRCCOPY);
    
    		for(x=0;x<ANZ_GEGNER;x++)
    		{
    			if(globtmp.gegner[x].zustand== TRUE)
    			{
    				SelectObject(hdce,globtmp.gegner[x].hbitmap);
    
    				BitBlt(hdcfeld,globtmp.gegner[x].rcpaint.left,globtmp.gegner[x].rcpaint.top,globtmp.gegner[x].breite,globtmp.gegner[x].hoehe,hdce,0,0,SRCCOPY);
    
    				Rectangle(hdcfeld,globtmp.gegner[x].schussrect.left,globtmp.gegner[x].schussrect.top,globtmp.gegner[x].schussrect.right,globtmp.gegner[x].schussrect.bottom);
    			}
    
    		}
    
    		Rectangle(hdcfeld,globtmp.jet.schusspos.left,globtmp.jet.schusspos.top,globtmp.jet.schusspos.right,globtmp.jet.schusspos.bottom);
    
    		Ellipse(hdcfeld,100,100,20,20);
    
    		BitBlt(hdc,0,0,WS_BREITE_X,WS_HOEHE_Y,hdcfeld,0,0,SRCCOPY);
    


  • Das FillRect am Anfang macht imho an dieser Stelle (also vor SelectObject) nicht so arg viel Sinn 😉


Anmelden zum Antworten