Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Doppelpuffertechnik

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
27.09.2004, 11:28 Uhr
~stevy
Gast


Hallo,
in meinem Programm wird viel gezeichnet und dabei immer aufwändig gerechnet. Damit es beim Scrollen nicht immer ruckelt, möchte ich erst komplett zeichnen (ohne anzuzeigen) und dann anzeigen.

Der Algorithmus müsste etwa folgender sein:

MyProg::ScrollFunktion() {
CDC dc(this);
Erstelle zweiten, temporären DC
Zeichne alles in den zweiten DC
Wenn alles drin ist, kopiere den zweiten in den echten DC.
}

Weiß jemand, wie man das verwirklichen kann?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
27.09.2004, 19:03 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Ja



Du erstellst dir einen CreateCompatibleDC einen kompatiblen Device Context zu dem in den du malen willst und kopierst dann mit BitBlt um.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
28.09.2004, 12:56 Uhr
~stevy
Gast


Hab ich eben versucht, aber dann ist auf einmal der Hintergrund schwarz.


C++:
CRect clientrect; GetClientRect(clientrect);
    
CDC memDC; // temporärer DC
CBitmap bm, *pb;

memDC.CreateCompatibleDC(pDC); // pDC = Zeiger auf meinen DC
bm.CreateCompatibleBitmap(pDC, clientrect.right, clientrect.bottom);
pb = memDC.SelectObject(&bm);

DrawGrid(&memDC,clientrect.left,clientrect.right); // zeichnet ein Gatter

pDC->BitBlt(0,0,clientrect.right,clientrect.bottom,&memDC,0,0,SRCCOPY);
memDC.SelectObject(pb);
bm.DeleteObject();

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
28.09.2004, 19:09 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Hast du mal die Rückgabewerte der einzelnen Funktionen überprüft?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
30.09.2004, 17:07 Uhr
~stevy
Gast


Noch nicht.

Kann es sein, dass ein erstellter DC immer erst mal schwarz ist?!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
30.09.2004, 17:21 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


wenn du es sagst

rgb 0 0 0 ist doch schwarz (oder wars weiß?) also wird der initial schwarz sein
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: