2012-08-01 33 views
1

我正在研究Silverlight应用程序,它在画布上显示多个小图标,每个图标的大小约为10x10像素。该图标由Path定义。Silverlight,鼠标点击道路上的空缺

存在一个可用性问题,其中某些图标形状如此,因此,如果用户在间隙中单击,则不会注册点击。看到下面的图片,看看我的意思。

enter image description here

我想知道,有没有在WPF/Silverlight的一个简单的方法,使一个路径的“背景”是点击?而不是将其包装在另一个WPF类型中,这会增加渲染器的负担。

另外,是否有一个简单的修复方法来改善系统,比如将路径包裹在矩形或其他几何图形中以使整个区域可点击?

+0

由于你想避免嵌套在另一种类型,也许尝试有一个路径也填充这些差距与透明的颜色路径? – 2012-08-01 11:07:58

+0

你知道该怎么做吗?据我所知Path支持填充,笔划但不是多种颜色。或者你的意思是两条路? – 2012-08-01 11:14:15

+0

这需要在实际路径后面放置一个普通的矩形路径并处理相同的单击事件。这可能比矩形更糟糕,但你需要时间测试。绝对难以维持。 – 2012-08-01 12:11:17

回答

2

使用带绘图组的绘图笔代替路径。

<Rectangle Name="TransparentBack" Height="10" Width="10"> 
    <Rectangle.Fill> 
     <DrawingBrush> 
      <DrawingBrush.Drawing> 
       <DrawingGroup> 
        <GeometryDrawing Brush="Transparent"> 
         <GeometryDrawing.Geometry> 
          <RectangleGeometry> 
           <RectangleGeometry.Rect> 
            <Rect Height="1" Width="1"/> 
           </RectangleGeometry.Rect> 
          </RectangleGeometry> 
         </GeometryDrawing.Geometry> 
        </GeometryDrawing> 
        <GeometryDrawing Brush="White"> 
         <GeometryDrawing.Geometry> 
          <PathGeometry> 
           <PathFigure StartPoint="0,0"> 
            <LineSegment Point="0,1"/> 
            <LineSegment Point="1,1"/> 
           </PathFigure> 
          </PathGeometry> 
         </GeometryDrawing.Geometry> 
        </GeometryDrawing> 
       </DrawingGroup> 
      </DrawingBrush.Drawing> 
     </DrawingBrush> 
    </Rectangle.Fill> 
</Rectangle> 
+0

顺便说一句,透明几何不是事实上需要的。我喜欢直接控制渲染区域。 – 2012-08-01 11:58:23