Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[vb.net] Probleme mit Gifs/Picturebox

Empfohlene Antworten

Veröffentlicht

Hy,

ich bins mal wieder :D

Mit folgendem Code lade ich ein Bild in eine Picturebox:

Dim bmp As Bitmap

Dim fs As System.IO.FileStream

fs = New IO.FileStream(pfad, IO.FileMode.Open, IO.FileAccess.Read)

bmp = New Bitmap(fs)

fs.Close()

picturebox.Image = bmp

Das funktioniert soweit auch, aber sobald er ein animiertes Gif laden soll, macht das Programm Probleme. Er lädt das Bild, zeigt es an (ohne Animation) und bricht das Programm mit folgender Fehlermeldung ab:

"Eine nicht behandelte Ausnahme des Typs 'System.Runtime.InteropServices.ExternalException' ist in system.windows.forms.dll aufgetreten.

Zusätzliche Informationen: In GDI+ ist ein allgemeiner Fehler aufgetreten."

Ich hab schon gegoogelt, aber ich finde leider nix :(

Wenn ich das Bild über "picturebox.Image.FromFile(pfad)" gibt es keine Probleme, aber so kann ich das Bild nicht laden, weil ich es dann nicht mehr löschen kann (über eine 2. Form, glaubt mir ich hab einiges probiert, sogar mein Ausbilder hat mitgeholfen, aber es ging alles nicht und mit dem System.IO.FileStream funzt es wunderbar, nur das ich hier jetzt Probleme mit animierten Gifs habe)

Ist es möglich, das der obere Code einfach mal keine animierten Gifs beherrscht?

Hoffe ihr könnt mir helfen

Mfg

BabyGirl

Wenn ich das Bild über "picturebox.Image.FromFile(pfad)" gibt es keine Probleme, aber so kann ich das Bild nicht laden, weil ich es dann nicht mehr löschen kann

ich glaub dir ja dass du es versucht hast, aber irgendwie muss es doch gehn...

was hast du denn alles versucht?

im notfall das steuerelemnt irgendwie neu laden oder so...

hab leider kein .NET zur hand, sonst würd ichs mal testen :/

Also ich bin grad dabei nen Bildbetrachter für die Schule zu programmieren und da hab ich ne Vorschau wo lauter Pictureboxen sind mit allen Bildern.

Wenn ich dann auf ein Bild klicke wird es auf der selben Form(1.Form) groß angezeigt.

Über ein Menü geh ich auf Bearbeiten und es öffnet sich eine neue Form(2.Form).

Dort ist das Bild wieder angezeigt und ich kann es bearbeiten und löschen.

Aber um es löschen zu können, muss das Bild in der Picturebox in der 1.Form leer machen. Wenn ich aber über die 2. Form auf die 1. zugreifen wollte, war für ihn die Picturebox in der 1. Form nothing (mein Ausbilder meinte wir sollten es mit ByRef und mit bestimmten Events probieren, aber das ging alles nicht, die Box war immer noch nothing egal was wir anstellten). Da ich aber die Box nicht leeren konnte (in der 2. Form war das kein Problem), konnte ich das Bild nicht löschen da immer noch ein Prozess auf die Datei zugriff (= Picturebox der 1.Form).

Also hab ich es mit diesem Filestream probiert und damit ging es wunderbar. Da störte es ihm auch nich das in der 1. Form das Bild noch in der Picturebox war. Also alles super.

Bis auf die Tatsache mit den animierten Gifs :(

Wenn ich auf das Bild in der Vorschau klicke dann wird es mir groß angezeigt und das Programm bricht ab.

Hoffe, dass dir das ein bissl weiter hilft, weil den anderen Code hab ich leider nicht mehr *schäm* da das ja mit den Filestream wunderbar geklappt hatte, aber hätt ich das gewusst, dann hätt ich ihn aufgehoben :rolleyes:

also ich steig durch deinen text nicht so ganz durch... aber um von der 2. form auf die 1. zu kommen bzw. das bild zu bekommen musst du nur den pfad als globale variable deklarieren...

dann hast du den pfad in der 1. und der 2. form... und wenn du die 2. lädst schmeißt du das bild aus der 1. form raus... also picturebox = nothing oder so...

aber vielleicht hab ich dich auch falsch verstanden :rolleyes:

du hat mich richtig verstanden :D

Nur das was du eben gesagt hast, hat ja leider nicht funktioniert :(

du hat mich richtig verstanden :D

Nur das was du eben gesagt hast, hat ja leider nicht funktioniert :(

muss... spätestens heute abend kann ich das mal testen und geb dann bescheid... ;)

Tu das

kannst dir dann aber auch bis Sonntag Zeit lassen, weil ich ja Weekend nicht zu Hause bin.

Aber danke schonmal :)

Problem gelöst :D

Wenn das Bild ein animiertes Gif ist, dann darf der Stream nicht frühzeitig geschlossen werden ("Der Stream muss für die Lebensdauer des Bitmap-Objekts geöffnet bleiben.")

Wahrscheinlich hat dadurch die GDI Probleme damit :rolleyes:

Jedenfalls schließ ich jetzt den Stream erst, wenn ich das Bild löschen will und es funzt wunderbar *freu*

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.