Hallo zusammen,
ich schreibe gerade ein VB.net 2010 Bildvergleichungsprogramm in dem in einer Listbox alle Dateien drin stehen, die in einem zu vor gewählten Verzeichnis aufgeführt sind. Sie haben am Anfang das Wort "doppelt " oder "gelösht " stehen.
Mit hilfe von 2 Buttons kann ich das Bild zum löschen markieren (es erhält dann das Wort "gelöscht " oder ich kann es mir wieder zurückholen, dann erhält es das Wort "doppelt " wieder.
Mit 2 weiteren Buttons kann ich immer 2 Bilder vor oder zurück springen in der Listbox. Dazu gibt es eine Textbox, die ich immer um 2 erhöhe bzw. reduziere.
Soweit funktioniert nun auch schon alles einwandfrei.
Wenn ich nun aber mir die aktuelle Situation anzeigen lassen möchte, funktioniert dies nicht so richtig.
Hier nun erst einmal der Code
Sub Bilder_löschen_oder_nicht() '(Bildnr As Integer)
' Die gtewählten doppelten Bilder anzeigen
TextBox1.Text = Mid(ListBox1.Items.Item(StartPosition.Text), InStr( _
ListBox1.Items.Item(StartPosition.Text), ";") + 1, Len( _
ListBox1.Items.Item(StartPosition.Text)))
Dim oStream1 As New System.IO.FileStream(TextBox1.Text, _
IO.FileMode.Open)
' Bitmap-Objekt mit den Daten aus dem Stream füllen
PictureBox1.Image = New Bitmap(oStream1)
'System.Threading.Thread.Sleep(2000)
oStream1.Close()
Dim g1 As Graphics = PictureBox1.CreateGraphics
MsgBox("|" & Mid(ListBox1.Items.Item(StartPosition.Text), 1, 9) & "|")
If Mid(ListBox1.Items.Item(StartPosition.Text), 1, 9) = "gelöscht " Then
BtnLöschenBild1.Text = "Zurückholen"
' Pen initialisieren
l_Pen = New Pen(Brushes.Red, 10)
g1.DrawLine(l_Pen, 0, 0, PictureBox1.Size.Width, _
PictureBox1.Size.Height)
g1.DrawLine(l_Pen, 0, PictureBox1.Size.Height, _
PictureBox1.Size.Width, 0)
Else
' Linie entfernen durch neuladen des Bildes
PictureBox1.Refresh()
BtnLöschenBild1.Text = "Löschen"
End If
TextBox2.Text = Mid(ListBox1.Items.Item(StartPosition.Text + 1), InStr( _
ListBox1.Items.Item(StartPosition.Text + 1), ";") + 1, Len( _
ListBox1.Items.Item(StartPosition.Text + 1)))
Dim oStream2 As New System.IO.FileStream(TextBox2.Text, _
IO.FileMode.Open)
' Bitmap-Objekt mit den Daten aus dem Stream füllen
PictureBox2.Image = New Bitmap(oStream2)
oStream2.Close()
Dim g2 As Graphics = PictureBox2.CreateGraphics
MsgBox("|" & Mid(ListBox1.Items.Item(StartPosition.Text + 1), 1, 9) & _
"|")
If Mid(ListBox1.Items.Item(StartPosition.Text + 1), 1, 9) = "gelöscht " _
Then
BtnLöschenBild2.Text = "Zurückholen"
' Pen initialisieren
l_Pen = New Pen(Brushes.Red, 10)
g2.DrawLine(l_Pen, 0, 0, PictureBox2.Size.Width, _
PictureBox2.Size.Height)
g2.DrawLine(l_Pen, 0, PictureBox2.Size.Height, _
PictureBox2.Size.Width, 0)
Else
' Linie entfernen durch neuladen des Bildes
PictureBox2.Refresh()
BtnLöschenBild2.Text = "Löschen"
End If
End Sub Wenn ich die beiden MSGBOXen deaktiviere, werden mir meine beiden roten Kreuze nur sehr kurz angezeigt und es bleiben nur die beiden Bilder übrig.
Sind die beiden MSGBOXen aber aktiv, so wird mir alles korrekt angezeigt.
Meine Frage ist nun, was mache ich falsch bzw. wie zeichne ich in eine Picturebox richtig ein Kreuz?
Für hilfreiche Antworten wäre ich Euch sehr dankbar.
Gruß
Volker
Beitrag wurde zuletzt am 04.08.13 um 12:38:27 editiert. |