| |

VB.NET - Ein- und UmsteigerRe: Bild in einer Picturebox transparenter Hintergrund - GELÖST | |  | Autor: Volker Bunge | Datum: 10.02.13 11:19 |
| Hallo Zusammen,
habe mein o. g. Problem mitlerweile selbst hinbekommen.
Hier nun die Lösung
Private Sub BtnTransparenteFarbeEntfernen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnTransparenteFarbeEntfernen.Click
Dim BMP As Bitmap = BildAnzeigeNeu.Image
For x As Integer = 0 To Val(Me.Breite.Text) - 1
For y As Integer = 0 To Val(Me.Höhe.Text) - 1
TextBox1.Text = BMP.GetPixel(x, y).ToString
If BMP.GetPixel(x, y).ToString = Me.AktuelleFarbe.Text Or BMP.GetPixel(x, y).ToString = "Color [A=255, R=252, G=255, B=255]" Or BMP.GetPixel(x, y).A = 0 Or BMP.GetPixel(x, y).R > 250 Or BMP.GetPixel(x, y).G > 250 Or BMP.GetPixel(x, y).B > 250 Then
BMP.SetPixel(x, y, Color.Transparent)
End If
Next
Next
BildAnzeigeNeu.Image = BMP
BildAnzeigeNeu.Refresh()
End Sub
Erklärung:
- Als erstes wird das Bild der Picturebox 'BildanzeigeNeu' in eine Variable übernommen
- Nun werden zwei Schleifen gestartet, die das gesamte Bild pixelweise durchlaufen
- Textbox1 bekommt nun für die aktuelle Pixelposition den Farbwert
- Nun wird der zuvor festgelegte Farbwert (AktuelleFarbe) mit dem gerade aktuellen Farbwert verglichen.
(Ich habe hier noch ein paar Sonderprüfungen eingebaut, die mir einige Farbwerte für Weiss mit prüfen)
- Als nächstes wird der aktuelle Pixel auf Transparent gesetzt
- Nach dem durchlaufen aller Schleifen wird das nun transparente Bild neu zugewiesen und angezeigt.
Um die Transparente Farbe per Klick auszuwählen habe ich folgendes eingefügt.
Private Sub BildAnzeigeNeu_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles BildAnzeigeNeu.MouseClick
On Error Resume Next
'Dim col As System.Drawing.Color = DirectCast(BildAnzeigeNeu.Image, Bitmap).GetPixel(Val(Me.XMouse.Text), Val(Me.YMouse.Text))
Dim myBitmap As New Bitmap(BildAnzeigeNeu.Image)
Dim pixelColor As Color = myBitmap.GetPixel(Val(Me.XMouse.Text) - Val(XPos.Text), Val(Me.YMouse.Text) - Val(YPos.Text))
AktuelleFarbe.Text = pixelColor.ToString
'MsgBox(col.ToArgb)
Me.TransparenteFarbeAnzeige.BackColor = Color.FromArgb(pixelColor.ToArgb)
If TransparenteFarbeBeimKlickenLöschen.Checked = True Then
Call BtnTransparenteFarbeEntfernen_Click(sender, e)
End If
End Sub
Private Sub BildAnzeigeNeu_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles BildAnzeigeNeu.MouseMove
Me.XMouse.Text = e.X
Me.YMouse.Text = e.Y
MousePos.Text = Me.XMouse.Text & " X " & Me.YMouse.Text
Call BildAnzeigeNeu.Refresh()
End Sub
Private Sub BildAnzeigeNeu_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles BildAnzeigeNeu.Paint
' Fadenkreuz zeichnen
Dim g As Graphics = e.Graphics
Dim Ypoints As Point() = {New Point(0, Val(YMouse.Text)), New Point(Me.BildAnzeigeNeu.Width, Val(Me.YMouse.Text))}
g.DrawLines(Pens.Black, Ypoints)
Dim Xpoints As Point() = {New Point(Val(XMouse.Text), 0), New Point(Val(Me.XMouse.Text), Me.BildAnzeigeNeu.Height)}
g.DrawLines(Pens.Black, Xpoints)
End Sub
Benötigt werden dazu folgende Elemente:
1 x Picturebox = BildAnzeigeNeu
4 x Textboxen = XMouse, YMouse, MousePos, AktuelleFarbe
Ich hoffe, dass ich anderen hiermit einen Tipp geben konnte.
Volker |  |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
sevISDN 1.0 
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats TOP! Unser Nr. 1 
Neu! sevDataGrid 3.0
Mehrspaltige Listen, mit oder ohne DB-Anbindung. Autom. Sortierung, Editieren von Spalteninhalten oder das interaktive Hinzufügen von Datenzeilen sind ebenso möglich wie das Erstellen eines Web-Reports. Weitere Infos
|
|
|
Copyright ©2000-2025 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|