Picture Box - on Click
-
Hallo zusammen,
ich habe ein paar pictures aufn Formular und beim onClick Ereignis auf picture (ein neues Bild wird in das picture geladen ) gibt es eine gewisse verzögerung .
hat jemand ne Idee um die Sache flüssiger ablaufen zu lassen ?
Danke schön
-
Und das soll jetzt jemand wissen an was es liegt das du eine Verzögerung hast, könntest du das etwas genauer Beschreiben, eventuell Quelltext wo das Bild geladen wird.
Gruß
-
int a1=0;
void CDialog2::Onpic1()
{
if(a1==0)
{
pict1.DeleteObject();
pict1.LoadBitmap(IDB_r1);
m_p1.SetBitmap(pict1);
a1=1;
}
else
{
pict1.DeleteObject();
pict1.LoadBitmap(IDB_b1);
m_p1.SetBitmap(pict1);
a1=0;
}
}Also Beim Klicken des pictures soll ein anderes Bild auf dem selben picture geladen werden, wenn das sog. 2te Bild angezeigt wird soll wieder das erste angezeigt werden.
pict1 is ein Objekt aus CBitmap
m_p1 Variable vom picture
IDB_b1 bzw. IDB_r1 die 2 Bilder in der ResourceSo nun habe ich 80 pictures !!!
Nun gehe ich durch und beim Klicken mehrerer pictures nacheinander , kommt es zur Verzögerung.Mir is selber gerade aufgefallen das es daran liegen könnte das ich in jedem OnClick Ergeisnis ( also bei jedem picture ) das Objekt pict1 benutze .
Werde es mal mit 80 Objekten der CBitmap Klasse versuchen.
Kann es sein das, der Aufruf pict1.DeleteObject(); bei einem "leeren" pict1 schneller geht als bei einem "vollen" pict1.Danke schön
-
DWSk schrieb:
Kann es sein das, der Aufruf pict1.DeleteObject(); bei einem "leeren" pict1 schneller geht als bei einem "vollen" pict1.
Muß ja, is schon ein unterschied ob man Speicher frei geben muß, oder nicht. Und die Verzögerung bei mehreren Duchklicken, entsteht mit Sicherheit durch das Umladen des Bitmap-Objektes.
Gruß
-
Ich vermute mal, dass SetBitmap das Fenster nur invalidiert und dadurch das Fenster verzögert angezeigt wird. Das ist an sich auch gut so. Wenn Du einen sofortigen Response benötigst bau doch mal UpdateWindow nach dem SetBitmap ein.