当我不设置面板背景时,我无法获取鼠标事件。为什么有这种行为?
我可以通过将背景设置为透明(默认情况下为空)来获取面板上的鼠标事件。
空背景和透明背景有什么区别?
When Background=null
它在渲染时不会向 MILCore 发出任何绘图命令,并且在命中测试中不会计算控件的整个区域。
When Background=Transparent
,它在渲染时向 MILCore 发出普通的绘图命令,并且在命中测试中确实控制了整个区域。
Brushes.Transparent
实际上是一个普通的画笔,其 alpha(不透明度)通道设置为零。因此,在大多数情况下它就像普通颜色一样。如果背景是普通颜色,则会检测到鼠标点击,因此也会检测到Brushes.Transparent
.
也就是说,有一些地方代码会检测 Brushes.Transparent 并通过完全省略绘图命令来对其进行优化。例如,这种情况发生在窗口透明度与操作系统的交互中:操作系统不会被告知任何绘制有的区域Brushes.Transparent
是应用程序的一部分,因此单击它不会执行任何操作。这是通过特殊外壳完成的Brushes.Transparent
以此目的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)