Возможно ли иметь два перекрывающих элемента управления PictureBox с прозрачными изображениями?
Имея два перекрывающих PictureBox
controls, я пытаюсь сделать прозрачные области окна с изображением, чтобы элементы управления были ниже (в z-порядок).
Даже после попробовав, что предлагает Microsoft, я не могу получить желаемый результат.
Это то, что у меня есть:
![enter image description here]()
И это то, что я хочу:
![enter image description here]()
Итак, мой вопрос:
В любом случае, чтобы достичь желаемого результата с помощью двух элементов управления PictureBox
(или другим способом), которые перекрывают друг друга и позволяют прозрачным областям пропускать?
Update:
На самом деле я решил это, используя этот ответ, на вопрос SO Прозрачные изображения с помощью С# WinForms ".
Ответы
Ответ 1
Попробуйте это
private void Form1_Load(object sender, EventArgs e)
{
// Transparent background...
pictureBoxOverlay.BackColor = Color.Transparent;
// Change parent for overlay PictureBox...
pictureBoxOverlay.Parent = pictureBoxMain;
// Change overlay PictureBox position in new parent...
// pictureBoxOverlay.Location = new Point(0, 0);
}
Результат
![enter image description here]()
llink
Ответ 2
Насколько я знаю, прозрачность элемента управления зависит от его родительского контроля (как указано в ссылке, которую вы указали), что означает, что для того, чтобы добиться эффекта, который вы ищете, вам нужно иметь один снимок поле, вложенное в другое окно с изображением, что невозможно, если ящик для изображений не является контейнером.
Однако вы можете использовать пользовательский элемент управления контейнером вместо окна изображения для исходного изображения.
Самый основной элемент управления - панель. Просто установите фоновое изображение элемента управления и поместите в него второй ящик.
Другим решением будет использование одного окна с изображением и управление рендерингом вручную.
Это, безусловно, лучшее решение, поскольку псевдомодульная прозрачность другого метода неэффективна.