Сделать контроль быть на вершине

У меня есть это изображение, и я хочу, чтобы оно было поверх другого изображения.

(окно формы приложения, C#)

2 ответа

Решение

Если это один элемент управления, частично перекрывающий другой, и вы хотите, чтобы один или другой элемент находились сверху, щелкните правой кнопкой мыши изображение, которое нужно вверху, в конструкторе и выберите "Переместить на передний план". Существует "Отправить назад", которое вы можете использовать на изображении, которое вы хотите, за другим.

Если вам нужна частичная прозрачность, например, альфа-маска на верхнем изображении или градиентное смешение между двумя изображениями прямо поверх другого, вам, вероятно, понадобятся более продвинутые возможности графики WPF. Вы МОЖЕТЕ делать попиксельные эффекты в WinForms, но в Winforms нет ничего встроенного для обеспечения прозрачности изображения, а манипулирование изображением в Winforms для каждого пикселя не использует преимущества графического ускорения (100% ЦП)., с затратами времени выполнения замедляет вас дальше).

В коде у вас есть несколько звонков, которые вы можете сделать. BringToFront и SendToBack, вероятно, самые простые:

yourControl.BringToFront();
yourControl.SendToBack();

Также вы можете контролировать это из родительского контейнера элемента управления, используя Control.ControlCollection.SetChildIndex. Например:

// Bring control to front    
MyForm.Controls.SetChildIndex(SomeControl, 0); 

В противном случае просто нажмите "Bring to Front" или "Send to back" в конструкторе, поскольку @KeithS уже ответил.

Другие вопросы по тегам