2009-06-04 19 views
1

Ich habe eine .NET WinForms-Anwendung mit einem animierten GIF in einem PictureBox. Es ist eine Ladeanimation, die während einer BackgroundWorker Verarbeitung in einem anderen Thread angezeigt wird. Ich lade das Bild durch Setzen der Image Eigenschaft und es animiert sich selbstständig.Bildanimation stoppt beim Minimieren und Wiederherstellen

Alles ist in Ordnung, bis ich die Anwendung minimieren und wiederherstellen. An diesem Punkt hört das Bild auf zu animieren und zeigt nur den Frame an, der zuletzt angezeigt wurde.

Beachten Sie, dass:

  • Der Hintergrund-Thread noch läuft gut und keiner der „Geschäft“ der Anwendung betroffen ist.
  • Anschließend angezeigte animierte GIFs funktionieren einwandfrei (sofern die Anwendung nicht erneut minimiert wird).

Weiß jemand, was dieses Problem verursacht? Irgendwelche Problemumgehungen?

Antwort

1

Offensichtlich stoppt die PictureBox die Animation explizit, wenn das Fenster verdeckt ist. Die PictureBox sollte ungültig gemacht und neu gezeichnet werden, wenn das Fenster nicht mehr verdeckt ist, aber das Invalidierungsereignis wird unter Vista nicht automatisch ausgeführt.

Eine Problemumgehung besteht darin, Ihrem Formular einen Zeitgeber hinzuzufügen, der PictureBox.Invalidate() alle 500ms aufruft. Dies stellt sicher, dass die Animation niemals stoppt.

Weitere Informationen finden Sie unter this MSDN thread.

+0

Interessant und danke für den Link. Freut mich zu wissen, dass jemand anderes das Problem auch hat. Der Workaround ist ziemlich nervig, aber das Beste, was wir haben, denke ich. –

0

Ich weiß nicht, was es verursacht, aber was ist, wenn Sie erkennen, wenn es minimiert ist und jedes Mal, wenn es wiederhergestellt wird, wieder anzeigen?

Verwandte Themen