Hallo Leute,
ich stehe vor folgender Aufgabe:
1. Ich möchte ein Foto anzeigen lassen (mir egal ob in Picturebox oder in Panel etc...) - soweit Ok
2. Ich möchte nun darauf mit der Maus Markierungen vornehmen (z.B. etwas einkreisen) - soweit OK
3. Ich möchte aber die vorgenommenen Markierungen (das auf das Control gezeichnete) ohne das Hintergrundbild speichern.
Welchen Ansatz würdet Ihr hier verfolgen?
Hintergrund, warum ich die Markierungen separat haben möchte ist, dass man das Foto jederzeit wieder aufrufen kann und die Anmerkungen dann löschen oder ergänzen kann.
Das endgültige Zusammenführen der beiden Grafiken bekomme ich hin, das ist nicht das Problem.
EDIT: Habe gerade im Netz diesen Hinweis gelesen (aber noch nicht ausprobiert):
Wenn das wirklich funktioniert, dann könnte ich das Foto als BackgroundImage laden und als .Image einfach eine transparente Bitmap in der selben Größe und dann zeichne ich im Prinzip auf die transparente Bitmap und das ursprüngliche Foto bleibt unbehelligt. Mal sehen ob ich heute noch dazukomme dies auszuprobieren.
LG Roland
Das Zusammenmischen der beiden Dateien in .image und .backgroundimage funktioniert schon.
Hier mal nur meinen Code rauskopiert.
Das Zeichnen probiere ich nun auch noch. Wird aber zu 99% funktionieren ;-).
Beiträge zusammengefügt. ~Thunderbolt
ich stehe vor folgender Aufgabe:
1. Ich möchte ein Foto anzeigen lassen (mir egal ob in Picturebox oder in Panel etc...) - soweit Ok
2. Ich möchte nun darauf mit der Maus Markierungen vornehmen (z.B. etwas einkreisen) - soweit OK
3. Ich möchte aber die vorgenommenen Markierungen (das auf das Control gezeichnete) ohne das Hintergrundbild speichern.
Welchen Ansatz würdet Ihr hier verfolgen?
Hintergrund, warum ich die Markierungen separat haben möchte ist, dass man das Foto jederzeit wieder aufrufen kann und die Anmerkungen dann löschen oder ergänzen kann.
Das endgültige Zusammenführen der beiden Grafiken bekomme ich hin, das ist nicht das Problem.
EDIT: Habe gerade im Netz diesen Hinweis gelesen (aber noch nicht ausprobiert):
First, the picturebox has two "layers" that you can draw on. You can assign your bitmap to the Picturebox.BackgroundImage and then do your drawing on the PictureBox.Image. In this case when you clear the PictureBox.Image, the .BackgroundImage would remain.
Wenn das wirklich funktioniert, dann könnte ich das Foto als BackgroundImage laden und als .Image einfach eine transparente Bitmap in der selben Größe und dann zeichne ich im Prinzip auf die transparente Bitmap und das ursprüngliche Foto bleibt unbehelligt. Mal sehen ob ich heute noch dazukomme dies auszuprobieren.
LG Roland
Das Zusammenmischen der beiden Dateien in .image und .backgroundimage funktioniert schon.
Hier mal nur meinen Code rauskopiert.
VB.NET-Quellcode
- Private Sub ListView_FotoHaupt_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListView_FotoHaupt.SelectedIndexChanged
- If ListView_FotoHaupt.SelectedItems.Count = 0 Then Exit Sub
- Dim AktuelleFotoDatei As String = ListView_FotoHaupt.SelectedItems(0).Tag.ToString
- 'Foto in die Picturebox laden (aber ins .BackgroundImage)
- Dim TempBMP As Bitmap
- Using fs As New System.IO.FileStream(AktuelleFotoDatei, System.IO.FileMode.Open, System.IO.FileAccess.Read)
- TempBMP = New Bitmap(fs) ' File wird nicht blockiert
- fs.Close()
- End Using
- If PictureBox_DragHere.BackgroundImage IsNot Nothing Then PictureBox_DragHere.BackgroundImage.Dispose()
- PictureBox_DragHere.BackgroundImage = TempBMP
- 'Prüfen ob es eine Anmerkungsdatei gibt
- If File.Exists(AktuelleFotoDatei + ".annotation") Then
- 'Bereits eine Markierung vorhanden
- MarkierungenBearbeitenToolStripMenuItem.Text = "Markierungen bearbeiten"
- Dim TempLayerBMP As Bitmap
- Using fs As New System.IO.FileStream(AktuelleFotoDatei + ".annotation", System.IO.FileMode.Open, System.IO.FileAccess.Read)
- TempLayerBMP = New Bitmap(fs) ' File wird nicht blockiert
- fs.Close()
- End Using
- If PictureBox_DragHere.Image IsNot Nothing Then PictureBox_DragHere.Image.Dispose()
- TempLayerBMP.MakeTransparent(Color.White)
- PictureBox_DragHere.Image = TempLayerBMP
- Else
- 'Keine Markierung vorhanden, also nichts ins .image
- MarkierungenBearbeitenToolStripMenuItem.Text = "Markierung hinzufügen"
- If PictureBox_DragHere.Image IsNot Nothing Then PictureBox_DragHere.Image = Nothing
- End If
- End Sub
Das Zeichnen probiere ich nun auch noch. Wird aber zu 99% funktionieren ;-).
Beiträge zusammengefügt. ~Thunderbolt
Liebe Grüße
Roland Berghöfer
Meine aktuellen und kostenlos verwendbaren Tools (mit VB.NET erstellt): freeremarkabletools.com | priconman.com | SimpleCalendar | AudibleTouch | BOComponent.com | bonit.at
Roland Berghöfer
Meine aktuellen und kostenlos verwendbaren Tools (mit VB.NET erstellt): freeremarkabletools.com | priconman.com | SimpleCalendar | AudibleTouch | BOComponent.com | bonit.at
Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Thunderbolt“ ()