将Picturebox图像转换为透明VB.Net

时间:2016-10-08 08:55:32

标签: vb.net

对于白色背景的图像,我遇到了问题。如何删除白色背景或使图像透明?

现在我正在使用此代码

Dim _ms3 As New System.IO.MemoryStream()
pbSignCapture.Image.Save(_ms3, System.Drawing.Imaging.ImageFormat.Png)
Dim _arrImage3() As Byte = _ms3.GetBuffer()
_ms3.Close()

还使用_arrImage3保存图像。

我想转换PictureBox中的图像,将白色背景变为透明。

1 个答案:

答案 0 :(得分:2)

考虑使用Bitmap类打开图像文件。

Dim myImage as new Bitmap("C:\Image file.bmp")

然后您可以使用MakeTransparent()MakeTransparent(Color)方法:

获取背景像素的颜色。

Dim backColor As Color = myImage.GetPixel(1, 1)

使myBitmap的backColor透明。

myImage.MakeTransparent(backColor)

修改

我从新细节中了解到,您希望PictureBox在源图像透明的情况下是透明的。不幸的是,使用WinForms是不可能的,因为透明度系统不是级联的。您可以将pictureBox的BackgroundColor属性设置为透明,但这与您的想法不同。 PictureBox控件的可用像素将显示父控件的内容。

这意味着,例如,如果您在图片框下面有一个标签,并为图像设置透明背景;标签不会显示,因为它不是图片框的明显控制。

解决方法是在目标控件的paint事件中手动绘制图像。

假设您有一个包含许多控件的表单,并且您希望通过按钮(名为btn)绘制广告图像。你必须以这种方式覆盖表单的paint事件:

Private Sub form_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles form.Paint
    Dim g As Graphics = e.Graphics    
    g.DrawImage(Image.FromFile("C:/yourimage.png", btn.Location.X, btn.Location.Y)
End Sub