vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: 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
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Bild in einer Picturebox transparenter Hintergrund3.499Volker Bunge09.02.13 11:26
Re: Bild in einer Picturebox transparenter Hintergrund - GEL...1.787Volker Bunge10.02.13 11:19

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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