[VC] MFC - sehr langsames Zeichnen

08/11/2010 - 14:58 von Ernst.Sauer | Report spam
Hallo,

ich habe eine MFC-CScrollView Anwendung (VS 2005).
Den View-Programmrumpf habe ich einem Buch über VC++ 6.0 entnommen.

Ich zeichne ein quadratisches Raster bestehend aus 10 000 Punkten,
die durch Linien verbunden werden.
Es werden also ca. 100*100*2*2 = 40 000 Linien gezeichnet.

In OnDraw rufe ich mein Zeichenprogramm auf, das diese Linien zeichnet.
In OnDraw wird kein MemDC verwendet.

Nach dem return aus dem Zeichenprogramm (nach OnDraw) dauert es
_sehr lange_, bis die Zeichnung wirklich zu sehen ist
(bei deutlich weniger Rasterpunkten geht es schneller).

Was ich noch erkennen kann:
in viewcore.cpp wird OnPaint und dort OnDraw aufgerufen

void CView::OnPaint()
{
// standard paint routine
CPaintDC dc(this);
OnPrepareDC(&dc);
OnDraw(&dc);
}


Einschliesslich OnDraw geht es offensichtlich schnell, danach dauert es,
woran kann es liegen?
Wàhrend der Wartezeit ist auch das Hauptfenster noch nicht vollstàndig
aufgebaut, z.B. ist ein ToolBar nicht zu sehen.
Zeichne ich neu, wird das Fenster zunàchst blass und dann dauert es wieder.


Danke im Voraus für einen Tipp
Ernst Sauer
 

Lesen sie die antworten

#1 Martin Richter [MVP]
08/11/2010 - 19:50 | Warnen spam
Hallo Ernst!

Einschliesslich OnDraw geht es offensichtlich schnell, danach dauert es,
woran kann es liegen?
Wàhrend der Wartezeit ist auch das Hauptfenster noch nicht vollstàndig
aufgebaut, z.B. ist ein ToolBar nicht zu sehen.
Zeichne ich neu, wird das Fenster zunàchst blass und dann dauert es wieder.



Bist Du sicher, dass genau dieser Codeteil schnell geht.
Schau Dir doch mal den Callstack an.

BTW: Du sollest OnDraw Optimieren und nur den Bereich zeichnen, der
nicht geclipped wird.

Martin Richter [MVP] WWJD http://blog.m-ri.de
"A well-written program is its own heaven; a poorly written
program is its own hell!" The Tao of Programming
FAQ: http://www.mpdvc.de Samples: http://www.codeproject.com

Ähnliche fragen