Wpf Panel Фоновая проблема - PullRequest
       11

Wpf Panel Фоновая проблема

3 голосов
/ 12 ноября 2009

Когда я не устанавливаю фон моей панели, я не могу получить события мыши на этом. почему это поведение? Я могу получать события мыши на панели, установив для фона значение «Прозрачный», которое по умолчанию равно нулю. В чем разница между нулевым фоном и прозрачным?

1 Ответ

7 голосов
/ 12 ноября 2009

Когда Background=null, он не выдает команду рисования MILCore при рендеринге и не учитывает всю область элемента управления при тестировании попадания.

Когда Background=Transparent, он выдает обычную команду рисования MILCore при рендеринге и контролирует всю область при тестировании попадания.

Brushes.Transparent на самом деле обычная кисть с нулевым альфа-каналом (непрозрачностью). Из-за этого он действует как обычный цвет в большинстве ситуаций. Если бы фон был обычного цвета, щелчки мыши были бы обнаружены, поэтому они также обнаруживаются для Brushes.Transparent.

Тем не менее, есть несколько мест, где код обнаруживает Brushes.Transparent и оптимизирует его, полностью пропуская команду рисования. Например, это происходит для взаимодействия прозрачности окна с операционной системой: ОС не информируется о том, что какие-либо области, отмеченные Brushes.Transparent, являются частью приложения, поэтому нажатие на нее ничего не делает. Для этого используется специальный корпус Brushes.Transparent.

...