Problem mit Bitmaps

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Problem mit Bitmaps

    Hallo,
    Ich wollte wissen, wie man ein Bitmap löschen kann.
    Ich habe bis jetzt diesen, sehr Speicherfressenden Code:

    VB.NET-Quellcode

    1. Dim bmp As New Bitmap(WebKitBrowser1.Width, WebKitBrowser1.Height)
    2. WebKitBrowser1.DrawToBitmap(bmp, WebKitBrowser1.Bounds)
    3. bmp.dispose()

    Also:
    Wie kann man ein Bitmap, das nicht mehr gebraucht wird löschen?

    Danke für alle Antworten.

    Gruß,
    m9898 (der es jetzt bereut, das er BrowseIT schon veröffentlicht hat)
    Dispose is scohn richtig, nur wird der Speicher nicht gleicht bereinigt, sondern lediglich wieder freigegeben, und wenn das nächste Mal Speicher benötigt wird, wird er in diesen Speicher reingeladen.

    Den Speicher zu löschen kannst du über manuelles Ausführen des Garbage Collectors erreichen, Codes gibts dazu im Netz.
    Hi.

    Du setzt in deinem Code alle 500ms die Hintergrundfarbe von Form1, die wohl das Hauptfenster ist. Die Farbe ermittelst du jedes Mal neu, was ziemlich rechenlastig ist, denn in diesem Zeitintervall muss die komplette Bitmap analysiert werden (oder nur ein Teil davon - je nach Qualitätsstufe). Bei großen Bildschirmen wird demanch alle 500ms eine riesige Bitmap erzeugt, da Browser oft maximiert ausgeführt werden. Wenn du uns jetzt sagst, für was der Effekt letztlich gut ist (ich habe das Programm nicht ausgeführt und kann dies deshalb nicht beurteilen), können wir dir vielleicht bei der Optimierung helfen. Ich persönlich rate von diesem (solchen) Effekt(en) ab - er verbraucht Speicher und erscheint auf den ersten Blick sinnlos. Wer es bunt mag sollte sich mit Wpf anfreunden - diese Technologie scheint für die ansprechende visuelle Präsentation besser geeignet zu sein als Windows Forms.
    Gruß
    hal2000
    @hal2000
    Das wird verbessert. Die Bitmap wird noch manuell sehr stark komprimiert.

    @Dodo
    Werd dann mal schauen. Danke.

    EDIT: Einfacher als gedacht:

    VB.NET-Quellcode

    1. GC.Collect()

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „m9898“ ()