Picturebox Bilder anzeigen beschleunigen

  • Allgemein

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Fritz-albert.

    Picturebox Bilder anzeigen beschleunigen

    Hi.

    Kann man das Bild anzeigen beschleunigen?
    Nutze soweit

    VB.NET-Quellcode

    1. Me.PictureBox1.Image = Image.FromFile("C:\foo.bmp")


    Bei zB der Windowsbildanzeige geht das anzeigen von großen Bildern wesentlich schneller.

    Viellt ein Thumpnail erstellen?
    Für ein Mindestmaß an Rechtschreibung, Interpunktion und Majuskeln!
    lad das Bild vorher in eine variable, oder hau das ganze in nen "using" block, dann wird der speicher gleich wieder Frei gegeben.

    VB.NET-Quellcode

    1. Using Bild as Image = Image.FromFile("C:\foo.bmp")
    2. picturebox1.image = Bild
    3. end Using


    sollte klappen, hab kein VB grad hier....

    der lade-prozess sollte zwar dadurch nicht umbedingt schneller werden, aber es kommt nicht so lange das loading-bild
    Ich denke nicht, dass der Using-Block da iwas beschleunigt.
    Aber es dürften Fehler auftreten, weil das angezeigte Bild disposed ist.

    Ich weiß auch keine Beschleunigung - ich fand das auch immer schnell genug.

    Alternativ kannste evtl. die ImageLocation setzen. Aber das wird auch nix beschleunigen, ist nur glaub ein sauberer Umgang mitte Ressourcen.
    Natürlich beschleunigt der Using block nichts, aber da es ihm um geschwindigkeit geht, gehe ich mal davon aus das er mehrere Bilder pro Sekunde, oder zumindest mehrere über einen längeren zeitraum laden möchte.

    da das dann ziemlich denn ram zuspammt (es sei denn man lässt den gc drüber laufen), ist using doch ideal!

    Aber das die Picturebox das Bild nicht mehr anzeigt wenn die Variable disposed wird ist mir neu, kann aber gut sein, weiß ich nicht genau ;)
    habichgrad nochmal ausprobiert.
    Und dabei festgestellt, dass das mitte ImageLocation das bild leider auch nicht disposed.
    Ist nämlich richtig, dass man ein Image, was nicht mehr angezeigt werden soll, disposen sollte.

    Habich sone Extension für:

    VB.NET-Quellcode

    1. <Extension()> _
    2. Public Sub SetBackImg(ByVal Subj As Control, ByVal img As Image)
    3. If Subj.BackgroundImage IsNot Nothing Then Subj.BackgroundImage.Dispose()
    4. Subj.BackgroundImage = img
    5. End Sub

    bla schrieb:

    naja, ich möchte eig nur nacheinander Bilder anzeigen. Wobei mir da dann grad einfällt, dass ich immer das nächste Bild schonmal in eine Variable speichern könnte... hah^^


    dann solltest du vor dem laden in die variable ein application.doevents einfügen, da sich die form/die Picturebox vermutlich erst nach dem laden des Bildes erneuert, und du dann nichts gewonnen hast ^^