vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevAniGif - als kostenlose Vollversion auf unserer vb@rchiv CD Vol.5  
 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 mit Transparente Farbe funktioniert nur mit der langsamen Methode 
Autor: Volker Bunge
Datum: 17.02.13 18:49

Hallo Christoph,

vielen Dank für den Übersetzungslink.

Nun habe ich deinen Code mal ausprobiert. Soweit es die Geschwindigkeit betrifft ist er wirklich schnell.

Was ich aber festgestellt habe, ist folgendes:

Wenn ich meine Farbabweichung benutze, dann ist das Ergebnis mit Deiner Methode recht dürftig. Meine langsame Methode liefert mir mit nur 2-3 Durchläufen ein besseres Ergebnis.

Nicht das Du dies evtl. falsch verstehst. Die Geschwindigkeit ist echt super, nur halt das Ergebnis ist leider nicht so das ware.

Hier nun mal Code, den ich angepasst habe

 
Public Class Form3
    Private Sub BildanzeigeNeu_MouseClick(ByVal sender As Object, ByVal e As _
      System.Windows.Forms.MouseEventArgs) Handles BildanzeigeNeu.MouseClick
        BildanzeigeNeu.Image = aSetTransparent(BildanzeigeNeu.Image)
    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
 
        If Me.XMouse.Text > BildanzeigeNeu.Width Or Me.YMouse.Text > _
          BildanzeigeNeu.Height Then Exit Sub
        If IsNothing(BildanzeigeNeu.Image) Then Exit Sub
 
        Dim myBitmap As New Bitmap(BildanzeigeNeu.Image)
        On Error Resume Next
        Dim pixelColor As Color = myBitmap.GetPixel(Val(Me.XMouse.Text), Val( _
          Me.YMouse.Text))
 
        AktuelleFarbeA.Text = pixelColor.A
        AktuelleFarbeR.Text = pixelColor.R
        AktuelleFarbeG.Text = pixelColor.G
        AktuelleFarbeB.Text = pixelColor.B
 
        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 fk As Graphics = e.Graphics
 
        Dim Ypoints As Point() = {New Point(0, Val(YMouse.Text)), New Point( _
          Me.BildanzeigeNeu.Width, Val(Me.YMouse.Text))}
        fk.DrawLines(Pens.Black, Ypoints)
 
        Dim Xpoints As Point() = {New Point(Val(XMouse.Text), 0), New Point(Val( _
          Me.XMouse.Text), Me.BildanzeigeNeu.Height)}
        fk.DrawLines(Pens.Black, Xpoints)
 
    End Sub
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles Button1.Click
        OpenFileDialog1.Filter = "JPG|*.jpg|Bitmap|*.bmp"
        If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
            BildanzeigeNeu.Image = Image.FromFile(OpenFileDialog1.FileName)
 
        End If
 
    End Sub
 
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles Button3.Click
        BildanzeigeNeu.Image = SetTransparent(BildanzeigeNeu.Image)
    End Sub
 
    Private Function SetTransparent(ByVal vectorImage As Bitmap) As Bitmap
        Dim Diff As Integer = Farbabweichung.Text
        Dim A As Integer = AktuelleFarbeA.Text
        Dim R As Integer = AktuelleFarbeR.Text
        Dim G As Integer = AktuelleFarbeG.Text
        Dim B As Integer = AktuelleFarbeB.Text
        Dim RN As Integer
        Dim GN As Integer
        Dim BN As Integer
        Dim z As Integer
 
        For z = Diff * -1 To Diff
            RN = R + z
            GN = G + z
            BN = B + z
            If RN < 0 Then
                RN = 0
            End If
            If RN > 255 Then
                RN = 255
            End If
 
            If GN < 0 Then
                GN = 0
            End If
            If GN > 255 Then
                GN = 255
            End If
 
            If BN < 0 Then
                BN = 0
            End If
            If BN > 255 Then
                BN = 255
            End If
            'MsgBox(z & "  RN " & RN & "  GN " & GN & "  BN " & BN)
            vectorImage.MakeTransparent(Color.FromArgb(A, RN, GN, BN))
        Next
        Return vectorImage
    End Function
 
End Class
Wäre super, wenn Du mir meinen Fehler nennen könntest bzw. mir kurz den Unterschied zwischen den beiden Methoden erklären könntest.

Vielen Dank
Volker
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Bild mit Transparente Farbe funktioniert nur mit der langsam...1.859Volker Bunge16.02.13 11:19
Re: Bild mit Transparente Farbe funktioniert nur mit der lan...1.221Volker Bunge16.02.13 11:20
Re: Bild mit Transparente Farbe funktioniert nur mit der lan...1.396Volker Bunge16.02.13 11:21
Re: Bild mit Transparente Farbe funktioniert nur mit der lan...1.363Christoph197216.02.13 22:18
Re: Bild mit Transparente Farbe funktioniert nur mit der lan...1.384Volker Bunge17.02.13 16:46
Re: Bild mit Transparente Farbe funktioniert nur mit der lan...1.423Christoph197217.02.13 17:07
Re: Bild mit Transparente Farbe funktioniert nur mit der lan...1.165Volker Bunge17.02.13 18:49
Re: Bild mit Transparente Farbe funktioniert nur mit der lan...1.205Christoph197217.02.13 20:27
Re: Bild mit Transparente Farbe funktioniert nur mit der lan...1.268ModeratorDaveS17.02.13 21:13
Re: Bild mit Transparente Farbe funktioniert nur mit der lan...1.344Volker Bunge22.02.13 20:08

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