vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 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: Bilder auf einer Form verschieben / Update 
Autor: bauer
Datum: 20.12.10 09:45

Die vor einigen Tagen bereitgestellte Prozedur war etwas wurmig, hier die verbesserte Version.

  ''' <summary>
    ''' Erzeugt ein neues Bild welches ein zweites Bild unter Herausrechnung 
    ' vom Hintergrund enthaelt.
    ''' </summary>
    ''' <param name="pImage">Ausgangsbild welches ergaenzt werden soll</param>
    ''' <param name="pAddOn">Zusatzbild welches hinzugefuegt werden soll</param>
    ''' <param name="pAddOnBackColor">Herauszurechnende Hintergrundfarbe vom 
    ' Zusatzbild</param>
    ''' <param name="pDistanceThresHold">Farbdifferenz ab wann ein Pixel vom 
    ' Zusatzbild als Hintergrund erkannt werden soll</param>
    ''' <param name="pOP1">Farbanteil, welcher vom Ausgangsbild pro Pixel in 
    ' das neue Pixel einfliessen soll. 0 = 0%, 1 = 100%</param>
    ''' <param name="pOP2">Farbanteil, welcher vom Zusatzbild pro Pixel in 
    ' das neue Pixel einfliesen soll. 0 = 0%, 1 = 100%</param>
    ''' <param name="pMergePoint">obere linke Ecke im Zielbild fuer das 
    ' Zufuegen vom Zusatzbild</param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Function Image2MergedImage( _
                          ByVal pImage As Image _
                        , ByVal pAddOn As Image _
                        , ByVal pAddOnBackColor As System.Drawing.Color _
                        , ByVal pDistanceThresHold As Single _
                        , ByVal pOP1 As Single _
                        , ByVal pOP2 As Single _
                        , ByVal pMergePoint As Point _
                          ) As Image
 
        ' ---------------------------------------------------------------------
        ' -------------------------------------------
        ' Lokale Groessen 
        ' ---------------------------------------------------------------------
        ' -------------------------------------------
 
        'Arbeitsbereich fuer das Zielbild 
        Dim l_Destination As Bitmap = New Bitmap(pImage)
 
        'Arbeitsbereich fuer den Bildzusatz 
        Dim l_AddOn As Bitmap = New Bitmap(pAddOn)
 
        'Normalisierte Hintergrundfarbe des AddOn Bilds   
        Dim l_AddOnNBackColor As NRGB = RGBtoNRGB(pAddOnBackColor)
 
        'Ein Bildpunkt aus dem AddOn Teil 
        Dim l_AddOnPixel As System.Drawing.Color
 
        'ZielPixel, alter Wert 
        Dim l_DestinationPixelCurrent As System.Drawing.Color
 
        'ZielPixel, neuer Wert 
        Dim l_DestinationPixelNew As System.Drawing.Color
 
        'Zielpunkt x Koordinate 
        Dim l_DestinationX As Integer
 
        'Zielpunkt y Koordinate 
        Dim l_DestinationY As Integer
 
        'Zielbereich als Schnittbereich des Ueberlagerungsbilds angelegt am 
        ' Einfuegepunkt und dem Zielbild   
        Dim l_DestinationRect As Rectangle = Rectangle.Intersect(New Rectangle( _
          pMergePoint, pAddOn.Size), New Rectangle(New Point(0, 0), _
          l_Destination.Size))
 
        'Startpunkt zur Entnahme der Pixel aus dem Ueberlagerungsbild 
        Dim l_StartPoint As New Point(l_DestinationRect.X - pMergePoint.X, _
          l_DestinationRect.Y - pMergePoint.Y)
 
        'Endpunkt zur Entnahme der Pixel aus dem Ueberlagerungsbild 
        Dim l_EndPoint As New Point(l_StartPoint.X + l_DestinationRect.Width - _
          1, l_StartPoint.Y + l_DestinationRect.Height - 1)
 
        ' ---------------------------------------------------------------------
        ' -------------------------------------------
        ' Verarbeitung 
        ' ---------------------------------------------------------------------
        ' -------------------------------------------
 
 
        For y As Integer = l_StartPoint.Y To l_EndPoint.Y
 
            For x As Integer = l_StartPoint.X To l_EndPoint.X
 
                'Zielpunkt ausrechnen 
                l_DestinationX = pMergePoint.X + x
                l_DestinationY = pMergePoint.Y + y
 
                'AddOnPixel ermitteln 
                l_AddOnPixel = l_AddOn.GetPixel(x, y)
 
                'Farbdifferenz zum Hintergrund 
                If GetColorDistance(l_AddOnNBackColor, l_AddOnPixel) >= _
                  pDistanceThresHold Then
                    'Kein Hintergrundpixel => Bildpunkt mergen 
 
                    'Bisheriges Zielpixel holen 
                    l_DestinationPixelCurrent = l_Destination.GetPixel( _
                      l_DestinationX, l_DestinationY)
 
                    'Mischfarbe herstellen aus bisherigem Pixel und 
                    ' zuzufuegendem Pixel 
                    l_DestinationPixelNew = GetBlendColor( _
                      l_DestinationPixelCurrent, pOP1, l_AddOnPixel, pOP2)
 
                    'Zielpixel mit neuem Inhalt versehen 
                    l_Destination.SetPixel(l_DestinationX, l_DestinationY, _
                      l_DestinationPixelNew)
 
                Else
                    'Farbdistanz ist zu Gross, somit Hintergrund Pixel, vergiss 
                    ' es 
                End If
 
            Next
 
        Next
 
        Return l_Destination
 
    End Function


Beitrag wurde zuletzt am 20.12.10 um 09:46:26 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Bilder auf einer Form verschieben1.548xater17.12.10 08:50
Re: Bilder auf einer Form verschieben1.112Christoph197217.12.10 08:58
Re: Bilder auf einer Form verschieben1.126xater17.12.10 09:30
Re: Bilder auf einer Form verschieben1.159bauer17.12.10 11:58
Re: Bilder auf einer Form verschieben1.090xater17.12.10 12:06
Re: Bilder auf einer Form verschieben1.271bauer17.12.10 12:08
Re: Bilder auf einer Form verschieben1.086xater17.12.10 12:13
Re: Bilder auf einer Form verschieben1.074bauer17.12.10 12:13
Re: Bilder auf einer Form verschieben1.103xater17.12.10 12:37
Re: Bilder auf einer Form verschieben1.232bauer17.12.10 16:38
Re: Bilder auf einer Form verschieben1.147xater17.12.10 16:40
Re: Bilder auf einer Form verschieben1.093bauer17.12.10 16:47
Re: Bilder auf einer Form verschieben - Source Teil11.224bauer17.12.10 17:26
Re: Bilder auf einer Form verschieben Coding Teil21.127bauer17.12.10 17:28
Re: Bilder auf einer Form verschieben Teil31.079bauer17.12.10 17:29
Re: Bilder auf einer Form verschieben Teil41.045bauer17.12.10 17:29
Re: Bilder auf einer Form verschieben Teil51.068bauer17.12.10 17:30
Re: Bilder auf einer Form verschieben Teil61.153bauer17.12.10 17:32
Re: Bilder auf einer Form verschieben Teil71.141bauer17.12.10 17:32
Re: Bilder auf einer Form verschieben Teil8 und Ende1.094bauer17.12.10 17:36
Re: Bilder auf einer Form verschieben / Update1.315bauer20.12.10 09:45
Re: Bilder auf einer Form verschieben / Update1.030xater20.12.10 09:50
Re: Bilder auf einer Form verschieben1.030bauer21.12.10 07:55

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