【发布时间】:2017-01-20 08:00:07
【问题描述】:
想象一下,我将这个椭圆应用于样式的 ControlTemplate。 (例如:这将用于滑块的拇指)
<Ellipse x:Name="Ellipse"
Fill="#C0FFFFFF"
Stroke="{StaticResource SpecialColor}"
StrokeThickness="2"/>
现在只要鼠标接触到这个椭圆,这个元素就会被鼠标捕获。如何更改碰撞几何?是否有一种仅限 XAML 的方法来执行此操作?
假设我想让碰撞区域更小,以便当鼠标位于椭圆中间时它会捕获它。
或者我想让碰撞区域大于椭圆大小,这样当鼠标靠近椭圆时它会捕获它。
【问题讨论】:
-
最简单的方法(仅限 XAML)是放置一个稍大(或更小)的椭圆,上面带有
Fill="Transparent"。透明(相对于 null)确实适用于命中测试。 -
不错的意见,将虚拟椭圆放置得更大更透明。但是椭圆变小了呢?如果我用一些画笔填充外椭圆,它将计入命中测试
-
正如 Erno 在他的回答中指出的那样,您必须在透明椭圆上处理鼠标事件。将您当前的椭圆视为装饰器,将透明的视为“实际”椭圆。