2016-10-08 4 views
-1

У меня проблема с образами на белом фоне. Как удалить белый фон или сделать изображение прозрачным?Convert Picturebox Image to Transparent 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, чтобы превратить белый фон в прозрачный.

+0

Пожалуйста, удалите MySQL тег ... – theBugger

+0

@theBugger К сожалению моя ошибка не ставил код MySQL, но я редактировал его в настоящее время. – TKGhoul

ответ

1

Рассмотрите возможность использования класса Bitmap, чтобы открыть файлы с изображениями.

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

И тогда вы можете использовать MakeTransparent() или MakeTransparent(Color) методы:

Получить цвет пикселя фона.

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

Сделайте обратный цвет прозрачным для myBitmap.

myImage.MakeTransparent(backColor) 

EDIT:

Как я понимаю из новых деталей, которые вы хотите иметь PictureBox быть прозрачным, где исходное изображение является прозрачным. К сожалению, это невозможно, используя WinForms, потому что система прозрачности не каскадирует. Вы можете установить свойство pictureBox BackgroundColor прозрачным, но это будет действовать иначе, чем вы думаете. Свободные пиксели элемента управления PictureBox будут отображать содержимое родительского элемента .

Это означает, что если у вас есть, например, ярлык под вашим picurebox и установите прозрачный фон для изображения; метка не будет отображаться, потому что это не прозрачный элемент управления изображением.

Обходным способом является рисование изображения вручную в событии paint управления назначения.

Предположим, что у вас есть форма с большим количеством элементов управления, и вы хотите нарисовать изображение объявления над кнопкой (с именем btn). Вы должны переопределить краски событий формы таким образом:

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 
+0

делает 'myBitmap'' PictureBox'? – TKGhoul

+0

К сожалению, это была опечатка – theBugger

+0

Пробовала, но не работает cuz im printing on card, также сохраняя ее как png в базе данных – TKGhoul