Убедитесь, что изображение в pictureBox3
является прозрачным. Установите BackColor
на прозрачный. В коде установите для свойства Parent
pictureBox3
значение pictureBox2
. Отрегулируйте Location
координаты pictureBox3
, так как они будут относительно координат pictureBox2
после того, как вы изменили Parent
.
private void Form1_Load(object sender, EventArgs e)
{
pictureBox3.Parent = pictureBox2;
pictureBox3.Location =
new Point(
pictureBox3.Location.X
- pictureBox2.Location.X,
pictureBox3.Location.Y
- pictureBox2.Location.Y);
}
В конструкторе вы не увидите прозрачность, но во время выполнения вы увидите.
Обновление
На картинке слева показан вид конструктора, справа - версия времени выполнения.
Еще одно обновление
Я действительно не понимаю, как это возможно, что это не работает для вас. Я предполагаю, что должно быть что-то, что мы делаем по-другому. Я опишу точные шаги для создания рабочего образца. Если вы выполните те же самые шаги, мне интересно, получим ли мы такие же результаты или нет. Следующие шаги описывают, что делать и используют два изображения, которые я нашел в сети.
- Используя Visual Studio 2008, создайте новый проект с помощью шаблона приложения Windows Forms. Убедитесь, что проект ориентирован на .NET Framework 3.5.
- Установите размер формы на 457; 483.
- Перетащите элемент управления PictureBox на форму. Установите его местоположение на 0; 0 и его размер на 449; 449.
- Нажмите на многоточие помимо его свойства Image, нажмите кнопку Import ... и импортируйте изображение в http://a.dryicons.com/files/graphics_previews/retro_blue_background.jpg (просто введите URL-адрес в текстовое поле «Имя файла» и нажмите «Открыть»). Затем нажмите OK, чтобы использовать изображение.
- Перетащите еще один PictureBox на форму, установите его Location в 0; 0 и его Size в 256; 256. Также установите для свойства BackColor значение «Прозрачный».
- Используя тот же метод, который описан выше, импортируйте изображение http://www.axdn.com/redist/axiw_i.png, которое является прозрачным изображением.
Теперь поместите следующий код в обработчик события OnLoad формы:
private void Form1_Load(object sender, EventArgs e)
{
pictureBox2.Parent = pictureBox1;
}
Вот и все! При запуске этой программы я получаю прозрачное изображение поверх другого изображения.