对于白色背景的图像,我遇到了问题。如何删除白色背景或使图像透明?
现在我正在使用此代码
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中的图像,将白色背景变为透明。
答案 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