Возможно ли иметь два перекрывающих элемента управления 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

Насколько я знаю, прозрачность элемента управления зависит от его родительского контроля (как указано в ссылке, которую вы указали), что означает, что для того, чтобы добиться эффекта, который вы ищете, вам нужно иметь один снимок поле, вложенное в другое окно с изображением, что невозможно, если ящик для изображений не является контейнером.

Однако вы можете использовать пользовательский элемент управления контейнером вместо окна изображения для исходного изображения. Самый основной элемент управления - панель. Просто установите фоновое изображение элемента управления и поместите в него второй ящик.

Другим решением будет использование одного окна с изображением и управление рендерингом вручную.

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