2011-01-13 3 views
2

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

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

+1

Есть ли возможность довести до конца или довести метод? Либо в коде, либо даже в меню правой кнопки мыши в IDE – Tim

ответ

6

Если это один контроль частично перекрывает другую, и вы хотите, один или другой на вершине, щелкните правой кнопкой мыши на изображение, которое вы хотите на вершине в конструкторе, и выбрать «Bring На фронт ". Существует «Send To Back», который вы можете использовать на изображении, который хотите позади другого.

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

5

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

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

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

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

В противном случае просто нажмите кнопку «Переместить на передний план» или «Отправить обратно» в конструкторе, а @KeithS уже ответил.

+1

Не работает для меня, я в конечном итоге использовал someControl.BringToFront() –

+0

Хорошая точка! - Добавили их в качестве примеров тоже. – noelicus