Преобразовать изображение Picturebox в прозрачный VB.Net

#vb.net

#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. Пожалуйста, удалите тег mysql…

2. @theBugger Извините, из-за моей ошибки не был добавлен код mysql, но я отредактировал его сейчас.

Ответ №1:

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

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

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

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

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

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

 myImage.MakeTransparent(backColor)
  

Редактировать:

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

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

Обходной путь заключается в том, чтобы вручную нарисовать изображение в 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 
  

Комментарии:

1. есть ли myBitmap PictureBox ?

2. Извините, это была опечатка

3. пробовал, но не работает, потому что я печатаю на карточке и сохраняю ее в формате png в базе данных

4. Вы должны отредактировать вопрос и уточнить, чего вы хотите достичь

5. мне так жаль, что я не очень хорошо говорю по-английски, но я пытаюсь. смотрите мой отредактированный пост, моя ошибка, сэр