CDC / Bitmap Frage

Ferdinand_Stehle

Grünschnabel
Hallo,
Ich brauche unter C++ (Visual C++) einen Grafik-Zwischenspeicher.
Ich will mit anderen Funktionen in diesem Speicher zeichnen können (linien usw).
In der Draw-Funktion soll der Zwischenspeicher dann in pDC geladen werden.
Wichtig: Ich will nicht direkt in den pDC zeichen. Der Zwischenspeicher sollte vollkommen unabhängig sein.

Wie kann ich so etwas realisieren? Mit einem CDC?
 
Mit CreateCompatibleDC(...) kannst Du einen neuen DC erzeugen, in den Du dann zeichnen kannst. Den kannst Du dann mit BitBlt in den richtigen DC übertragen. Ich habe hier ein Stück Code aus dem Netz. Der ist zwar eigentlich für was Anderes, zeigt aber das Prinzip.
Code:
void CTreeCtrlX::OnPaint()
     {
    	 CPaintDC dc(this);
    
       	 // Create a memory DC compatible with the paint DC
    	 CDC memDC;
    	 memDC.CreateCompatibleDC( &dc );
    
       	 CRect rcClip, rcClient;
    	 dc.GetClipBox( &rcClip );
    
       	 GetClientRect(&rcClient);
    
        	 // Select a compatible bitmap into the memory DC
    	 CBitmap bitmap;
    	 bitmap.CreateCompatibleBitmap(&dc, rcClient.Width(), rcClient.Height());
    	 memDC.SelectObject( &bitmap );
    
       	 // Set clip region to be same as that in paint DC
    	 CRgn rgn;
    	 rgn.CreateRectRgnIndirect( &rcClip );
    	 memDC.SelectClipRgn(&rgn);
    	 rgn.DeleteObject();
    
    	//hier  zeichnen ......
    
  	 //jetzt den MemDC kopieren
 	 dc.BitBlt( rcClip.left, rcClip.top, rcClip.Width(), rcClip.Height(), &memDC,rcClip.left, rcClip.top, SRCCOPY );
    }
 
Zurück