Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите мне с Visual Studio 2013 (visual basik) как убрать в pictureBox задний фон

asdasd adsasd Знаток (392), закрыт 8 лет назад
как убрать в pictureBox задний фон эти углы и цвет
Дополнен 8 лет назад
сама картинка без рамок прозрачная
Лучший ответ
Ev Высший разум (118696) 8 лет назад
Никак не убрать.
Всё дело в том, что PictureBox на переднем плане даже не подозревает,
что под ним есть ещё один PictureBox и надо перерисовывать его изображение,
он перерисовывает фон своего родного контейнера, т. е. формы.
Что бы решить эту проблему, надо сделать совсем немного - переписать
заново Windows, поменяв в нем саму концепцию работы с объектами.
https://otvet.mail.ru/answer/1840672116/
Либо вообще отказаться от стандартных компонентов для хранения
изображений. Выводить изображения на форму чисто графическими методами,
например, используя Bitmap из GDI+
asdasd adsasdЗнаток (392) 8 лет назад
а что делать?
Ev Высший разум (118696) Я понятия не имею, что вы делаете, чего именно хотите добиться.
Остальные ответы
tigers corp Ученик (158) 8 лет назад
не так-то просто убрать - это не wpf. а какая цель? где это будет применяться?
East RX Просветленный (24468) 8 лет назад
Можно изменить форму PictureBox (контролы могут иметь любую форму, не только прямоугольную), задав соответствующий Region, и таким образом обрезать всё лишнее.

Dim path As New System.Drawing.Drawing2D.GraphicsPath()
path.AddEllipse(PictureBox2.ClientRectangle) 'для примера сделаем его просто круглым
PictureBox2.Region = New Region(path)
asdasd adsasdЗнаток (392) 8 лет назад
вы можете дать исходник ?
East RX Просветленный (24468) Регион строится по картинке, используя в качестве маски прозрачости цвет левого верхнего пикселя: Public Class Form1 Private Sub SetShape(picbox As PictureBox) Dim bmp As New Bitmap(picbox.Image, picbox.Size) Dim msk As Color = bmp.GetPixel(0, 0) Dim path As New System.Drawing.Drawing2D.GraphicsPath() For X As Integer = 0 To bmp.Width - 1 For Y As Integer = 0 To bmp.Height - 1 If bmp.GetPixel(X, Y) <> msk Then path.AddRectangle(New Rectangle(X, Y, 1, 1)) End If Next Y Next X picbox.Region = New Region(path) bmp.Dispose() path.Dispose() End Sub Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load SetShape(PictureBox1) SetShape(PictureBox2) End Sub End Class
Похожие вопросы