Laden...

Grafik in Windows Forms mit Multithread aktualisieren

Erstellt von T_B__ vor 13 Jahren Letzter Beitrag vor 13 Jahren 2.191 Views
T
T_B__ Themenstarter:in
194 Beiträge seit 2006
vor 13 Jahren
Grafik in Windows Forms mit Multithread aktualisieren

Hallo,

Ich habe mehrere PictureBoxes, die viele Bilder hintereinander anzeigen soll (Video).

Ein Bild wird also in die PictureBox geladen und mit der Update-Funktion aktualisiert.
Die GUI-Thread aktualisiert dann, wenn sie Zeit hat.

Die ist aber bei mehreren PictureBoxes voll ausgelastet und ich habe nur ca. 10 Bilder/s.

Gibt es eine Möglichkeit in Windows Forms die PictureBoxes in mehreren Threads gleichzeitig zu rendern um Multicore-CPUs besser auszunutzen?
Wie kann ich also direkt in einem Thread die Grafik aktualisieren und nicht nur signalisieren, dass das Control refresht werden musst.

T_B__

Z
403 Beiträge seit 2007
vor 13 Jahren

Hallo T_B__,

Für Videos ist WinForms mit GDI+ gänzlich ungeeignet meiner Meinung nach.
Und Das Rendern auf die GUI kann nur der GUI Thread übernehmen. (1 Thread).

Für Wiedergabe gibt es eine Mediaplayer komponente wenn ich mich nicht irre oder benutz XNA / SlimDX für Video Wiedergaben.

Edit: Du kannst natürlich alles puffern, das geht auch mit mehreren Threads. Das Ergebnis z.B. eine Bitmap könntest du aber trotzdem schnellstens alle 15 ms zeichnen soweit ich weiss.

André

6.911 Beiträge seit 2009
vor 13 Jahren

Hallo,

Wie kann ich also direkt in einem Thread die Grafik aktualisieren

In einem Threads, nämlich dem UI-Threads, gehts. Sonst mit keinem Thread - wie TheGear auch schon angemerkt hat. Siehe auch [FAQ] Controls von Thread aktualisieren lassen (Control.Invoke/Dispatcher.Invoke)

Wenn du es trotzdem in WinForms machen willst dann könntest du mit Threads die Videos laden so dass der UI nur mehr anzeigen und nicht laden muss.

Aber ich denke auch dass es bessere Alternativen dafür gibt. Zumal eine PictureBox für Bilder ist und nicht für Videos - heißt ja nicht VideoBox 😉

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

T
T_B__ Themenstarter:in
194 Beiträge seit 2006
vor 13 Jahren

Ich weiß, dass eine PictureBox nicht für Videos geeignet ist.

Dass andere Threads die Bilder laden, habe ich bereits implementiert.
Die UI-Thread macht nur den Refresh-Befehl, ist aber trotzdem das bottleneck.