Как создать прозрачную панель System.Windows.Forms.Panel поверх двух других уже существующих панелей, а затем нарисовать линию на прозрачной панели? - PullRequest
1 голос
/ 11 февраля 2011

Я пишу форму на C # и имею несколько панелей.Мне нужно провести линию между двумя панелями.Я нашел в Интернете несколько способов сделать это, и наиболее перспективным представляется создать третью панель, сделать ее прозрачной, поместить ее поверх моих исходных панелей и провести линию здесь.

Я не могу сделать панель прозрачной, даже если для ее свойств BackColor и ForeColor я установил прозрачную (в коде или в режиме конструктора VS).

Любые идеи о том, как сделать саму панель прозрачной (или невидимой), но чтобы нарисованная мной линия все еще была видна поверх всего остального?

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 11 февраля 2011

Нет, это прозрачно.Посмотрите на это, задав значение BackgroundImage формы.Вы увидите это через прозрачную панель.Конечно, это не та прозрачность, которую вы хотите, вы хотите, чтобы эффекты стека работали.Для этого нет прямой поддержки.

Если вы хотите, чтобы слои работали, не используйте элементы управления.Используйте событие Paint для рисования.Теперь нет проблем, если вы хотите прозрачности, просто не рисуйте.Нарисуйте линию на изображении, просто нарисовав его первым.Это также модель рендеринга WPF.

0 голосов
/ 12 февраля 2011

Вы можете сделать это довольно легко, как свой собственный UserControl.Вот пример кода:

Рисование поверх элементов управления внутри панели (C # WinForms)

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

...