Hi,
Finde ich toll, wie einem hier geholfen wird - Danke noch mal.
Also war die Idee, den Hintergrund zu kopieren und das Image darüber zu legen nicht nur eine Tat meiner Verzweiflung, sondern tatsächlich auch die einzige Lösung wenn ich Dich richtig verstehe?
Ich habe mit diesem Ansatz ein wenig gearbeitet:
Dim rect As Rectangle
rect.X = picResult.Left ’ Hier liegt das Ziel Control
rect.Y = picResult.Top
rect.Width = picResult.Width
rect.Height = picResult.Height
Dim bm_src1 As Bitmap = picSource1.Image.Clone ’ Das PNG Image
Dim bm_src2 As Bitmap = CopyBitmap(Me.BackgroundImage, rect) ’ Der Bereich unter dem Ziel Control
Dim bm_out As New Bitmap(bm_src1.Width, bm_src1.Height)
Dim gr As Graphics = Graphics.FromImage(bm_out)
’ Give the images alpha gradients.
'Dim alpha As Integer
For x As Integer = 0 To bm_src1.Width - 1
'alpha = (255 * x) \ bm_src1.Width
For y As Integer = 0 To bm_src1.Height - 1
Dim clr As Color = bm_src1.GetPixel(x, y)
clr = Color.FromArgb(clr.A, clr.R, clr.G, clr.B)
bm_src1.SetPixel(x, y, clr)
clr = bm_src2.GetPixel(x, y)
clr = Color.FromArgb(clr.A, clr.R, clr.G, clr.B)
bm_src2.SetPixel(x, y, clr)
Next y
Next x
’ Draw the images onto the result.
gr.DrawImage(bm_src1, 0, 0)
gr.DrawImage(bm_src2, 0, 0)
’ Display the result.
picResult.Image = bm_out
Aber das bringt zwei Probleme mit sich:
Erstens ist die Hintergrundgrafik ein wenig nach unten verschoben, die Koordinaten des Ziel Controls scheinen also nicht den tatsächlichen Koordinaten zu entsprechen.
Vielleicht durch die Border der Form?
Und zweitens wird das PNG so wie oben gar nicht angezeigt.
Nehme ich aber statt clr.A den berechneten Wert alpha (im Quelltext auskommentiert= dann geht es, sieht halt nur nicht mehr so aus, wie dass Original.
Gruß,
Andre
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]