Visual studio picturebox прозрачность
Я хочу создать возможность для пользователя в моем приложении создавать окна с картинками каждый раз, когда пользователь нажимает на основной кадр (я хочу сохранить изображения и предоставить польз.
Я обнаружил, что не могу использовать свойство Image для PictureBox управления PictureBox в List<Control> . Я хочу сделать что-то вроде этого: List<Control> pictureboxes = new List<C.
Мне нужно создать список миниатюр изображений, расположенных в Интернете. Я также хотел бы добавить CheckBox, чтобы сделать миниатюры подходящими. Я пытаюсь загрузить изображения из URL-адресов в L.
Я пытаюсь обновить изображение ящика изображения внутри "form1" из другого cs файла, мой код внутри test.cs slot_13.modifier = public; и внутри form1 я написал это также CheckForIllegalCrossThreadC.
i создал пользовательский элемент управления прямоугольником, и я использую этот пользовательский элемент управления в своем приложении. В моем приложении я обрабатываю изображение для различных оп.
Я создаю приложение Windows Forms. Как получить размер формы окна? В настоящее время у меня есть что-то похожее на мой код: PictureBox display = new PictureBox(); display.Width = 360; display.Heigh.
Кнопки делают это: если пользователь задерживает и удерживает его, он нажимает кнопку мыши над элементом управления и перемещает курсор из элемента управления, управление кнопкой изменяет его внешн.
Итак, я как бы застрял в моей движущейся коробке PICTURE; на данный момент моя форма 2 загружает окно с картинкой, начинает двигаться, это именно то, что я хотел, однако это не в моем контроле, а т.
Я работаю над программой, в которой я хочу получить информационный образ, который, когда вы наводите на него указатель мыши, появляется ToolTip , что моя проблема в том, что PictureBox , на котором.
Я успешно импортировал и отображал horizontaly в спискеView всех изображений из папки/каталога, и теперь я хочу, чтобы иметь возможность щелкнуть по одному из них и отобразить это изображение в бол.
Я рисую изображение на фотошоп. Я изменяю размер изображения в окне изображения в соответствии с шириной и высотой, чтобы правильно поместить его в picutrebox. После этого я хочу сохранить его, сох.
Я хочу получить местоположение x, y, щелкнув по файлу. У меня есть 2 изображения и один над другим. Маленький картинный ящик имеет прозрачный фон области (.jpg). Я хочу получить второй картинный ящ.
У меня есть папка, называемая App.Path & "\Images" Внутри него у меня 5 изображений, и в моей Form у меня также 5 Pictureboxes . Теперь я задаю вопрос: как я могу отображать их все Image Pictur.
Я собираюсь создать приложение для размещения многих изображений в области холста. Я хочу разместить изображения там и перемещать их, перетаскивая мышью. Но я борюсь с реализацией определенного кад.
Итак, у меня есть подсказка для инструмента, прикрепленная к файлу в форме окна, и текст, отображаемый в порядке, без ошибок, но когда я меняю фон, ничего не происходит, мне нужен желтый цвет фона.
Я создаю экран заголовка для проекта класса, и я загрузил кучу gifs для показа. У меня есть таймер на нем, который просто фиксируется на постоянном интервале. Я хочу, чтобы изображение изменилось, .
Я попытался с помощью следующего кода: pictureBox1.Invalidate(); //or pictureBox1.Update(); //or Refresh(); Но это просто ничего не сделало на этом. Я хочу очистить всю нарисованную графику на свое.
Я создал форму окна, которая отображает и изображение как логотип. Мне удалось просмотреть и отобразить изображение в PictureBox с помощью этого кода: private void button1_Click(object sender, Even.
Я не могу сделать свои изображения в форме. Я делаю это неправильно или? Это мой код: static Bitmap[] pictures = new Bitmap[9]; PictureBox[] picBox= new PictureBox[9]; в конструкторе: pictures[1] =.
Я определяю прямоугольную область на изображении и показываю ее пользователю в PictureBox. Поскольку изображение иногда может быть очень большим, я использую PictureBox с его SizeMode установленным.
У меня есть битмап, загруженный в картинный ящик. Моя проблема в том, что я хочу, чтобы она плавно перемещалась при использовании мыши. Есть ли какая-нибудь функция супер-пупер для перемещения и из.
Вот мой код: Dim Offset As Point Private Sub PictureBox1_MouseDown(ByVal sender As Object, ByVal e As MouseEventArgs) Handles PictureBox1.MouseDown Offset = New Point(-e.X, -e.Y) End Sub Private Su.
Я хочу сделать фон управления PictureBox прозрачным. В PictureBox (прямоугольная форма) я поместил значок (круглая по форме). Я хочу сделать значок прозрачным, чтобы отображалась другая часть под з.
У меня есть окно с изображением, которое я использую для предварительного просмотра снимка экрана, который я определяю с помощью мыши. Я бы хотел, чтобы мой winform менял свой размер в соответствии.
Я пытаюсь получить информацию из фотошопа из коллекции. Например, у меня есть 100 картинок в коллекции, и когда я нажимаю один, он загрузит новую форму со всей информацией (какое изображение это, р.
У меня есть два списка, один из которых имеет строку, а другой - тип PictureBox. Я хочу взять значения строки типа List и преобразовать ее в штрих-код, а затем сохранить в списке типа PictureBox. Я.
Я взял изображение из пользователя в Form1, чем я нарезал это изображение на несколько изображений и показал его в Form2, теперь я хочу, чтобы пользователь снова выбирал изображение из нескольких р.
У меня есть PictureBox в моей форме и загрузка изображения в него. Мне нужен этот PictureBox, чтобы изменить прозрачность (opacity, visibilit..etc), потому что мне нужен пользователь, чтобы лучше в.
У меня есть основной PictureBox который добавляет к нему, другие коробки с картинками; Я передаю родителям детям и добавляю их к родительскому элементу следующим образом: public class VectorLayer .
Я пишу небольшую программу, где я выбираю изображение через диалог открытых файлов. Когда я выбрал картинку, я хочу, чтобы она перезаписывала текущее изображение и отображала новое изображение. Теп.
Я хочу добавить изображение в своем богатом текстовом поле программно. Логика заключается в том, что когда я нажимаю на пользователя, изображение появится в RTB, а ниже его будут показаны его детал.
Мне интересно, можно ли получить отображаемые размеры изображения изображения, которое было изменено, чтобы оно соответствовало PictureBox. Свойство PictureBox SizeMode имеет значение Zoom. Таким о.
Поэтому я работал над небольшим игровым проектом под названием "экономика", и у меня возникла небольшая проблема. Я хочу, чтобы нарисовать человека-палку на экране, когда кто-то нанимает нового сот.
Рубрики
А так же делитесь знаниями, знакомьтесь с новыми утилитами и приложениями, учитесь у всегда готовых помочь ответить на самые сложные вопросы во всех сферах IT и программирования. Станьте гуру и экспертом разработки ПО, получите признание коллег, заработайте репутацию, создайте стартап или приложение которое будет работать на вас!
Как сделать фон pictureBox прозрачным?
Есть основной pictureBox, в котором храниться изображение. Есть еще один, который размещается.
Как сделать прозрачным фон в PictureBox
Понимаю что этот вопрос наверное не раз поднимался на этом форуме, но все же. Я собираюсь грузить.
Как сделать фон pictureBox прозрачным
Дело в том, что когда ставлю pictureBox1 и налаживаю на него pictureBox2 в который загружена.
Как сделать прозрачным фон картинки, загруженной в форму через pictureBox?
Как сделать прозрачным фон картинки, загруженной в форму через pictureBox? Дабы не было подобной.
Usaga, я смогу отследить клик по уже нанесенному bitmap?
Добавлено через 13 минут
Usaga, у меня vertex - наследуемый класс от pictureBox. Я рисую граф. Нужно, чтобы можно было отслеживать клики по вершинам.
Semael, всё ты сможешь, но своими силами, а не WinForms.
Тебе нужно будет реализовать своё, внутреннее представление создаваемого графа. Нужно будет перехватывать события от мышки и соответственно обрабатывать граф (создавать\перемещать вершины или что у тебя там в логике). И самому же придётся рисовать bitmap. Короче, всё ручками.
Usaga, я понял. Теперь. Как мне отследить клик по bitmap? Semael, событие нажатия левой клавиши мыши на PictureBox можно отследить подписавшись на событие Click этого контрола. Usaga, это я знаю. А именно нанесённый bitmap, на picturebox, как отследить?Решение
А именно нанесённый bitmap, на picturebox, как отследить? 1) Создайте модель данных. Если у вас граф и он является множеством вершин, значит нужно сделать класс для графа, и для вершины. Псевдокодом:2) Каждый Node имеет свойство типа Rectangle, которое обозначает область, где находится вершина, а также метод bool HitTest(Point p) который определеяет находится ли точка внутри прямоугольника:
3) Когда происходит клик по панели, которая отрисовывает граф, вы перебираете в цикле все вершины графа и методом HitTest проверяете, не попадает ли точка клика в вершину. Если вернулось true, значит юзер кликнул в данную вершину.
4) Ну и класс Node также имеет метод Draw, который отрисовывает свою картинку в своем Rectangle.
А вообще я вам написал выше, как оно должно быть.
Properties.Resources.AdoHf - ресурс, картинка PNG с прозрачностью.
Делалось для сплеш-формы, но думаю что принцып будет такой-же.
Сделать фон PictureBox прозрачным
Как сделать так, чтобы белый фон был прозрачным в пикчур боксе? Пример: Надо наложить картинку.
Сделать фон PictureBox прозрачным
Всем привет. У меня такая проблема. Как сделать чтобы в picturebox не отображались уголки.
Как сделать фон Label прозрачным?
Подскажите пожалуйста как мне сделать label1 background прозрачным?
Как сделать фон прозрачным в label
Вот допустим я помещаю картинку вместо фона программы, и помещаю туда label. Как можно сделать так.
Как в chart диаграмме сделать фон закрашивания прозрачным
Всем привет. В общем есть подобный эффект в SeriesX.BackGradientStyle. Там можно выбрать.
Как сделать фон TextBox прозрачным относительно формы
Добрый день! Возможно ли сделать объект TextBox на форме прозрачным? А то он портит весь задний.
GeeZeR » 11.12.2007 (Вт) 2:42
Парни, подскажите как вывести на экран полупрозрачный png или gif, чтобы кусок PictureBox был прозрачным, вот к примеру картинка:
Первый элемент PictureBox содержит изображение стены, а второй PictureBox наложен сверху и содержит изображение двери. Дверь тут полукруглая, верхние углы у картинки прозрачные. Вот собственно в этом и проблема как сделать так чтоб PictureBox содержащий рисунок двери был тоже прозрачным? Поставил BackColor - Transparent в свойствах PictureBox и ничего.
Понимаю что вопрос из разряда rtfm, но я блин в поиске уже утонул, помогите плз.
программист » 11.12.2007 (Вт) 11:11
Люди помогите плиз (мне это тоже очень нуно) инфы по теме не нашел (перерыл все и инет)!Ramzes » 11.12.2007 (Вт) 13:03
GeeZeR » 11.12.2007 (Вт) 19:10
Код: Выделить всё Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
PictureBox2.BackColor = Color.Transparent
PictureBox1.Image = Image.FromFile("img\wall.jpg")
PictureBox2.Image = Image.FromFile("img\door.jpg")
Я поставил даже так:
Код: Выделить всё Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
PictureBox2.BackColor = Color.Empty
PictureBox1.Image = Image.FromFile("img\wall.jpg")
PictureBox2.Image = Image.FromFile("img\door.jpg")
Всё равно PictureBox выглядывает. Жду помощи.
Вот файл проекта на всякий случай.
AnarCky » 11.12.2007 (Вт) 19:25
Как вариант: пересохрани картинку в .jpg с указанием прозрачного цвета. Компьютеры были придуманы чтобы исправлять ошибки людей. Но кто же тогда будет исправлять ошибки компьютера.GeeZeR » 11.12.2007 (Вт) 20:07
AnarCky Подскажи пожалуйста как указать прозрачный цвет? С .jpg я пробовал - то же самое получается. Есть мысль прозрачные углы картинки с дверью залить к примеру малиновым цветом, а потом программно исключить его или сделать прозрачным, но не будут ли края PictureBox выглядывать опять?
AnarCky » 11.12.2007 (Вт) 20:38
вот. покопался в книжке. проверь - должно работать:
Код: Выделить всё
Dim bmp As New Bitmap
bmp = Image.FromFile("img\door.jpg")
Dim g As Graphics = Graphics.FromImage(bmp)
Dim backColor As Color = bmp.GetPixel(3, 3) 'этот метод используется чтоб получить цвет пикселя координатами (3; 3)
bmp.MakeTransparent(backColor)
PictureBox2.Image = bmp
впринципе, если точно знаешь цвет фона, то можно сразу подставить в метод MakeTransparent()
Компьютеры были придуманы чтобы исправлять ошибки людей. Но кто же тогда будет исправлять ошибки компьютера.GeeZeR » 11.12.2007 (Вт) 21:22
Бейсик ругается на Dim bmp As New Bitmap :
"Overload resolution failed because no accessible 'New' accepts this number of arguments."
Я нашёл в мсдн пару зацепок, но не представляю как это применить:
Я не въезжаю как всё это дело оформить
Nord777 » 11.12.2007 (Вт) 21:55
Рисуй сразу на форме.
Код: Выделить всё Public Class Form1
Dim ImgDoor As Bitmap = Image.FromFile("img\door.jpg")
Dim ImgWall As Bitmap = Image.FromFile("img\wall.jpg")
Private Sub Form1_HandleCreated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.HandleCreated
Me.DoubleBuffered = True
End Sub
Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
Dim G As Graphics = e.Graphics
G.DrawImage(ImgWall, 59, 25)
G.DrawImage(ImgDoor, 182, 150)
End Sub
End Class
программист » 11.12.2007 (Вт) 22:10
Nord777Рисовать на форме не вариант - потом придется контролированть клики и курсор мыши в границе двери
Nord777 » 11.12.2007 (Вт) 22:28
Рисовать на форме не вариант - потом придется контролированть клики и курсор мыши в границе двериИ в чем проблема? +3 строки кода. Зато всё под контролем.
Код: Выделить всё Public Class Form1
Dim ImgDoor As Bitmap = Image.FromFile("img\door.jpg")
Dim ImgWall As Bitmap = Image.FromFile("img\wall.jpg")
Dim DoorRect As Rectangle
Private Sub Form1_HandleCreated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.HandleCreated
Me.DoubleBuffered = True
DoorRect = New Rectangle(182, 150, ImgDoor.Width, ImgDoor.Height)
End Sub
Private Sub Form1_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseClick
If DoorRect.Contains(e.Location) Then MsgBox("Door clicked")
End Sub
Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
Dim G As Graphics = e.Graphics
G.DrawImage(ImgWall, 59, 25)
G.DrawImage(ImgDoor, DoorRect)
End Sub
End Class
программист » 11.12.2007 (Вт) 23:18
Nord777А если нуно вставить анимированный рисунок (мельница или облачко)?
GeeZeR » 11.12.2007 (Вт) 23:24
Nord777 , любопытно спасибо за вариант.
Ну а если удобнее использовать именно PictureBox? Есть же какая-то возможность сделать именно сам PictureBox прозрачным насколько я понял из справки (ведь сам по себе PictureBox способен содержать прозрачный рисунок):
То есть получается если задать этот самый ControlStyles.SupportsTransparentBackColor как true, то запись типа:
PictureBox2.BackColor плюс-чего-то-там
выдаст нам прозрачный PictureBox с картинкой?
Ведь будет легче и естественнее использовать PictureBox с такими заданными свойствами, чем отрисовывать это всё прямо на форме.
программист » 11.12.2007 (Вт) 23:48
Свойство BackColor не поддерживает прозрачные цвета, если бит стиля ControlStyles.SupportsTransparentBackColor не задан как trueМожет кто-то знает как или где установить ControlStyles.SupportsTransparentBackColor в true
Nord777 » 12.12.2007 (Ср) 0:58
Может кто-то знает как или где установить ControlStyles.SupportsTransparentBackColor в trueControl.Setstyle(. true)
Только вам это не поможет.
Control.Region поможет, туда копайте.
вот небольшой пример:
Код: Выделить всё Imports System.Drawing.Drawing2D
Imports System.Drawing
Public Class Form1
Dim GP As New GraphicsPath
Dim P As New Pen(Color.Black, 5)
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None
Me.ControlBox = False
Me.Size = New Size(380, 300)
Me.Text = ""
Dim FF As New FontFamily("Arial BLack")
Dim Pnt As New PointF(0.0!, 50.0!)
Dim Rect As Rectangle = Me.ClientRectangle
Dim FS As FontStyle = FontStyle.Regular
Dim SF As New StringFormat()
SF.LineAlignment = StringAlignment.Center
GP.AddEllipse(Me.ClientRectangle)
GP.AddString("Round", FF, FS, 100.0!, Pnt, SF)
Me.Region = New Region(GP)
End Sub
Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
e.Graphics.FillPath(Brushes.AliceBlue, GP)
e.Graphics.DrawPath(P, GP)
End Sub
программист » 12.12.2007 (Ср) 2:19
Ну хорошо. Но это пример статик?!А мне необходи динамическое отображение (gif'а, к примеру)
AnarCky » 12.12.2007 (Ср) 6:12
2 программистпорасуждай логически: у тебя анимированноое изображение, это по сути набор кадров. и один и тот же пиксель, на одном и другом кадре может иметь разный цвет (и скорее всего он и будет иметь разный цвет). так что здесь графический редактор в руки и вперед. и кстати у меня пересохранение в .jpg (статичный) с указанием прозрачного цвета работает. Компьютеры были придуманы чтобы исправлять ошибки людей. Но кто же тогда будет исправлять ошибки компьютера.
GeeZeR » 12.12.2007 (Ср) 18:51
Nord777 , спасибо ещё раз - я поиграл вчера с твоим кодом - всё это легко применяется и отдельно для PictureBox, только исчезает он вместе с картинкой - можешь как-нибудь попробовать наложить вместо букв картинку?Ещё мне вот тут мысля пришла - у PictureBox есть свойство BackgroundImage, так вот - можно поместить это изображение позади основного рисунка (в пикчербоксе получится 2 картинки - одна над другой), и выводить на бэк-рисунок изображение того, что находится под PictureBox - получится такая себе эмуляция прозрачности. Есть у кого-нибудь такое решение?
GeeZeR » 12.12.2007 (Ср) 19:05
AnarCky писал(а): и кстати у меня пересохранение в .jpg (статичный) с указанием прозрачного цвета работает.в смысле работает? проект в студию плз
Nord777 » 13.12.2007 (Чт) 19:11
Nord777, спасибо ещё раз - я поиграл вчера с твоим кодом - всё это легко применяется и отдельно для PictureBox, только исчезает он вместе с картинкой - можешь как-нибудь попробовать наложить вместо букв картинку?GeeZeR » 13.12.2007 (Чт) 22:45
В общем я конечно пошаманил не совсем представляя что делаю:
Код: Выделить всё
Imports System.Drawing.Drawing2D
Imports System.Drawing
Public Class Form1
Dim GP As New GraphicsPath
Dim P As New Pen(Color.Black, 5)
'---БЛОК для PictureBox2---
Private Sub PictureBox2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles PictureBox2.Click
Dim FF As New FontFamily("Arial BLack")
Dim Pnt As New PointF(0.0!, 150.0!)
Dim Rect As Rectangle = PictureBox2.ClientRectangle
Dim FS As FontStyle = FontStyle.Regular
Dim SF As New StringFormat()
SF.LineAlignment = StringAlignment.Center
GP.AddEllipse(PictureBox2.ClientRectangle)
GP.AddString("Round", FF, FS, 100.0!, Pnt, SF)
PictureBox2.Region = New Region(GP)
End Sub
Private Sub PictureBox2_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox2.Paint
e.Graphics.FillPath(Brushes.AliceBlue, GP)
e.Graphics.DrawPath(P, GP)
'---Блок для PictureBox3---
Private Sub PictureBox3_BackColorChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles PictureBox3.BackColorChanged
Dim FF As New FontFamily("Arial BLack")
Dim Pnt As New PointF(0.0!, 150.0!)
Dim Rect As Rectangle = PictureBox3.ClientRectangle
Dim FS As FontStyle = FontStyle.Regular
Dim SF As New StringFormat()
SF.LineAlignment = StringAlignment.Center
GP.AddEllipse(PictureBox3.ClientRectangle)
GP.AddString("Round", FF, FS, 100.0!, Pnt, SF)
PictureBox3.Region = New Region(GP)
End Sub
Private Sub PictureBox3_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox3.Paint
e.Graphics.FillPath(Brushes.AliceBlue, GP)
e.Graphics.DrawPath(P, GP)
End Sub
'-------------------------------------------------------------------------------
Я вместо формы подставил этот код для PictureBox, и изменил события : для PictureBox2 - Click, а для PictureBox3 - BackColorChanged (ставил LoadCompleted, но эффекта не было).
Вид в дизайнере:
Если закомментировать блок для PictureBox3, и кликнуть на левой двери (PictureBox2), то получим такое:
Если закомментировать блок для PictureBox2, то получим такое:
Если раскомментировать оба блока и кликнуть на левой двери, то будет так:
Тут почему-то рисунок PictureBox3 появился на PictureBox2.
Короче такая фигня. Хз может она поможет если к примеру в рисунке двери залить каким-нибудь цветом прозрачные углы, а потом программно исключить его с помощью всей этой фишки. Или подложить под дверь бэкграундный рисунок (свойство пикчербокса BackgroundImage) и сделать его прозрачным, хз тут сам контейнер снановится прозрачным с рисунками или без.
Короче всё это фигня. Мне кажется можно попробовать под рисунок двери просто подложить бэкграунд и передавать ему изображение того, что находится под пикчербоксом. То есть снять координаты пикчербокса, его размеры, и сделать скриншот того что под ним и передать это бэкграунду. Если кто-то может - прошу помочь.
Nord777 » 15.12.2007 (Сб) 15:45
Применительно к твоему рисунку двери.
Код: Выделить всё Imports System.Drawing.Drawing2D
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim GP1 As New GraphicsPath
Dim Reg As New Region
Reg.MakeEmpty()
Reg.Union(New Rectangle(0, 33, 128, 95))
GP1.AddEllipse(New Rectangle(0, -1, 126, 75))
Reg.Union(GP1)
PictureBox2.Region = Reg
End Sub
End Class
GeeZeR » 15.12.2007 (Сб) 22:16
Nord777 спасибо, но это всё полумеры. А если сложный рисунок будет?
Вот с помощью твоего кода получилосьчто-то похожее на решение, но с побочными эффектами:
Код: Выделить всё Public Class Form1
Dim ImgWall As Bitmap = Image.FromFile("img\wall.jpg")
Private Sub Form1_HandleCreated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.HandleCreated
Me.DoubleBuffered = True
End Sub
Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
Dim G As Graphics = e.Graphics
G.DrawImage(ImgWall, 59, 25)
End Sub
End Class
(Файл проекта ниже)
Если отрисовать фоновый рисунок с помощью самой формы (в данном случае - стена), а сверху просто накладывать PictureBox со свойством BackColor=Transparent , то PictureBox станет прозрачным, но с небольшими глюками: PictureBox расположенный выше (PictureBox2), своей частью не закрытой рисунком будет просвечивать фон сквозь другой PictureBox расположенный ниже (PictureBox1):
Соответственно сквозь более верхний PictureBox ничего не просвечивается (PictureBox3).
В принципе пользоваться можно.
Nord777 можно ли сделать кпримеру так: залить нейтральным цветом прозрачные участки рисунка, затем оформить их в виде фигуры и вырезать её из пикчербокса с помощью .Region как в твоём предыдущем посте? То есть не подгонять программно эллипс под рисунок двери, а как-то представить эти углы в виде фигуры да и вырезать нафиг, программно или хз. Определить по цвету эти ненужные пиксели и вырезать.
I am using Visual Studio 2012. This is a screenshot of my form:
7 Answers 7
One way to do this is by changing the parent of the overlapping picture box to the PictureBox over which it is lapping. Since the Visual Studio designer doesn't allow you to add a PictureBox to a PictureBox, this will have to be done in your code (Form1.cs) and within the Intializing function:
Just change the picture box names to what ever you need. This should return:
GameBoard is control of type DataGridView; The image should be type of PNG with transparent alpha channel background;
Load the image like this:
3,618 2 2 gold badges 24 24 silver badges 37 37 bronze badgesI solved this problem by RectangleShape and with the below code I removed background, if difference between PictureBox and RectangleShape is not important and doesn't matter, you can use RectangleShape easily.
72.5k 16 16 gold badges 199 199 silver badges 357 357 bronze badgesOne fast solution is set image property for image1 and set backgroundimage property to imag2, the only inconvenience is that you have the two images inside the picture box, but you can change background properties to tile, streched, etc. Make sure that backcolor be transparent. Hope this helps
Just use the Form Paint method and draw every Picturebox on it, it allows transparency :
для моего проекта мне нужны изображения с прозрачным фоном. Я приготовила .jpg изображения, которые имеют прозрачный фон (чтобы проверить это, я открыл их в Photoshop). Теперь у меня есть класс, который расширяет PictureBox:
это, однако, просто отображает picturebox с белым фоном, я просто не могу заставить его работать с прозрачным фоном.
Это, вероятно, работает отлично. Вы видите, что находится за панелью управления. Это форма. Чья спина, вероятно, белая. Вы можете установить свойство BackgroundImage формы, чтобы быть уверенным, вы должны увидеть изображение через окно изображения. Вот так:
пробивая отверстие и картинка ящик и форма требует большего оружия, формы.TransparencyKey
Если вы хотите наложить изображения на изображения (а не изображения на форму), это сделает трюк:
где overImage и backImage-это PictureBox с png (с прозрачным фоном).
это связано с тем, что, как было сказано ранее, прозрачность изображения отображается с использованием заднего цвета родительского контейнера. PictureBoxes не имеют" родительского " свойства, поэтому вам нужно сделать это вручную (или создать элемент управления cutom, конечно).
на веб-сайте CodeProject есть отличное решение по адресу
по сути, трюк состоит в том, чтобы переопределить событие paintbackground, чтобы перебрать все элементы управления, лежащие в основе picturebox, и перерисовать их. Функция: -
создать новый Пользовательский Класс Управления, и вставьте в него следующее. перезапись материала класса по умолчанию:
Пользовательский Класс Управления:
. сохраните класс,затем очистите проект и снова создайте его. Новый элемент управления должен отображаться как новый элемент инструмента. Найдите его и перетащите в форму.
у меня были проблемы с этим контролем. Это происходит, когда я пытаюсь загрузить анимированную "загрузка" .jpg изображения.
изображение не анимируется , а также имеет проблемы с отображением при скрытии элемента управления, а затем попробуйте отобразить его снова.
сортируйте эти проблемы, и у вас будет идеальный пользовательский класс управления. :)
EDIT:
попробуйте, и убедитесь сами, я думаю : P
Если вы отображаете png с прозрачностью в поле изображения, это будет автоматически учитывать прозрачность, поэтому вам не нужно устанавливать прозрачный цвет
приведенные выше ответы, похоже, решают вашу проблему. Вы действительно видите, что находится за элементом управления picture box - сама форма с белым цветом. Здесь я создал простую функцию, которая сначала преобразует изображение байтового типа (массива) в растровое изображение, а затем устанавливает определенные цвета (из растрового изображения) в прозрачный. Что-то вы могли бы также использовать:
вы можете запустить эту функцию на Paint of the pictureBox. Это мой класс ссылается на функцию выше:
Читайте также: