Изменение непрозрачности отдельных элементов управления форм в .NET - PullRequest
2 голосов
/ 10 августа 2010

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

Есть предложения? Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 10 августа 2010

Это невозможно в WinForms, эффекты прозрачности не работают для перекрывающихся элементов управления. Лучшее, что вы можете сделать, - это наложение форм, чтобы вы могли использовать свойства Opacity и TransparencyKey.

Гораздо более практичный подход - использовать one PictureBox, в котором вы отображаете составное изображение. Такое изображение легко создать с помощью класса ColorMatrix. Пример кода в моем ответе вы найдете в этой теме .

0 голосов
/ 10 августа 2010

Как говорит @Kane, wpf, вероятно, лучше для этого.Только Form поддерживает Opacity как свойство в winforms ( см. Msdn ), но вам, возможно, удастся избежать неприятностей, если вы поместите ваши изображения в подформы (я действительноспекулировать здесь, не пробовал этого.) и играть с их непрозрачностью.

Удачи

...