@Olderman:
Was jetzt? Soll das Programm jetzt nur das Bild laden oder willst du es auch
Ich zum Beispiel würde das Ganze so machen:
Spoiler anzeigen
Eventuell könnte man - sofern gewünscht - die Klasse
Olderman schrieb:
da das Programm nur diese eine Aufgabe (Speicherbedarf) hatte
Irgendwie widersprechen sich deine Aussagen.Olderman schrieb:
Ich möchte mehrere Bilddateien (jpg) öffnen , sortieren, evtl. editieren und kopieren.
Was jetzt? Soll das Programm jetzt nur das Bild laden oder willst du es auch
sortieren, evtl editieren und kopieren
??Mir geht es nicht darum, dass du den Dialog mit den Falschen Pfad öffnest. Ich wollte dich nur darauf hinweisen, dass es schlechter Stil ist, im Code Daten, welche auf einem Control angezeigt werden, direkt und ungefiltert in deinem Programm ablauf zu verwenden. Eigentlich solltest du eine eigene Klasse haben, welche sich um die Datenbeschaffung kümmert (Bild laden). Diese kann dann eine (von mehreren) Propertieshaben, welche den Pfad beeinhaltet oder du übergibst der Funtkion zum Laden des Bildes den Pfad. ZUSÄTZLICH zum speichern des Pfades in der Property kannst du den Pfad auch in das Label schreiben. Aber wenn du den Pfad zum Laden des Bildes verwendest, dann bitte nicht den Text des Labels verwende, sondern entweder die Property der Klasse, eine interne, globale/lokale Variable der Form Klasse, in der du den Eventhandler definiert hast oder einfach der Funktion übergeben.Olderman schrieb:
Ich hätte das Label auch noch weglassen können und den Dialog mit sonst etwas starten können
Ich zum Beispiel würde das Ganze so machen:
VB.NET-Quellcode
- Public Class Form1
- Dim m_Picture as Image
- Dim imageDataProvider = new ImageDataProvider()
- Private Sub LoadPicture_Click(sender As Object, e As EventArgs) Handles Label.Click
- Using ofd = new OpenFileDialog()
- if ofd.ShowDialog == OK then
- Me.imageDataProvider.Path = ofd.FileName
- end if
- End using
- Dim load_image as Image = Me.imageDataProvider.LoadImage()
- if (load_image is not Nothing) then
- dim copy_image = new Bitmap(load_image)
- load_image.dispose()
- m_Picture = copy_image
- Me.PictureBox.Image = m_Picture
- end if
- End Sub
- End Class
- Public Class ImageDataProvider
- Private _path As String
- Public Property Path As String
- Get
- Return Me._path
- End Get
- Set
- Me._path = Value
- End Set
- Public Function LoadImage() As Image
- if (String.IsNullOrEmpty(Me.Path)) then Return Nothing
- if (Not File.Exists(Me.Path)) then Return Nothing
- Dim image As Image = Nothing
- Try
- image = Image.FromFile(Me.Path)
- Catch (ex As Exception)
- image = Nothing
- End Try
- Return image
- end Function
- End Class
ImageDataProvider
noch weiter abstrahieren (Als Interface implementieren und davon diverse Implementationen bauen (für verschiedene Formate)Das schon, aber damit eigenest du dir Angewohnheiten an, die dich vom professionellen Programmieren abbringen.Olderman schrieb:
Ich hab es probiert und es läuft
Könntest du dann bitte das Thema alsOlderman schrieb:
dass die beiden ersten Antworten es gelöst haben
Abgeschlossen
markieren? In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell