c#/ vb.net结合图像与透明边框

时间:2018-10-17 15:13:59

标签: .net graphics

我要组合2张图像,这里是一个例子。

我有卡车的图像和pensil的图像,我希望将它们结合在一起,如底部显示的那样,使用gimp使用alpha的选择创建,扩展和清除。

enter image description here

实际上,代码是最少的:

Dim base = Image.FromFile("small_truck.png")
Dim add As Bitmap = Bitmap.FromFile("pencil.png")
Dim frame As New Bitmap(base.Width, base.Height, Imaging.PixelFormat.Format32bppArgb)
Dim g = Graphics.FromImage(frame)
g.DrawImage(base, 0, 0)
g.DrawImage(add, base.Width - add.Width, base.Height - add.Height, add.Width, add.Height)
frame.Save("output.png")

有人知道如何复制gimp工作流程吗?

1 个答案:

答案 0 :(得分:0)

我做到了!

Dim base = Image.FromFile("small_truck.png")
Dim add As Bitmap = Bitmap.FromFile("pencil.png")
Dim frame As New Bitmap(base.Width, base.Height, Imaging.PixelFormat.Format32bppArgb)
Dim g = Graphics.FromImage(frame)
g.DrawImage(base, 0, 0)
g.CompositingMode = CompositingMode.SourceCopy
Dim startx = base.Width - add.Width, starty = base.Height - add.Height
For y = 0 To add.Height - 1
    For x = 0 To add.Width - 1
        Dim c = add.GetPixel(x, y)
        If c.A >= 128 Then
            g.FillRectangle(Brushes.Transparent, startx + x - 1, starty + y - 1, 3, 3)
        End If
    Next
Next
g.CompositingMode = CompositingMode.SourceOver
g.DrawImage(add, startx, starty, add.Width, add.Height)
frame.Save("output_32.png")

我在这里问答,也许对某人有用。