2012-01-29 39 views
0

我从形状得出,这是在DefiningGeometry无法看到行程

protected override Geometry DefiningGeometry 
    { 
     get 
     { 
      topLeft.X = Math.Min(Start.X, End.X); 
      topLeft.Y = Math.Min(Start.Y, End.Y); 
      width.X = Math.Abs(Start.X - End.X); 
      width.Y = Math.Abs(Start.Y - End.Y); 
      rectBounds.X = topLeft.X; 
      rectBounds.Y = topLeft.Y; 
      rectBounds.Width = width.X; 
      rectBounds.Height = width.Y; 
      rectGeo.Rect = rectBounds; 
      return rectGeo; 
     } 
    } 

我看到了填充,但不是中风,因为sroke是额外的宽度和高度,我试着使一些空间,它通过设置:

Width = width.X + StrokeThickness; 
//same for height. 

但后来没有获取绘制,没有人知道我在做什么错?顺便说一下,背景和笔触颜色是不同的。

+0

请确保您的笔画笔是差异然后您的BG和差异然后您的形状 – 2012-01-29 01:34:50

回答

0

行程总是在填充之上。低于1.0的厚度完全没有问题,尽管非常细的笔划自然会变得不可见。

填充完全填充Shape的几何体。描边渲染几何图形的轮廓,一半位于内部,一半位于外部。

从不将StrokeThickness添加到您的Shape的宽度(这只会像您期望的矩形一样)。有关Shape的属性如何运行,请参阅MSDN。

不要从Shape派生来创建简单的几何对象。使用预定义的矩形,椭圆,线等。使用Path获得更复杂的几何图形并设置Path.Data。

另请参阅Shapes and Basic Drawing in WPF Overview和MSDN中的Geometry Overview

0

StrokeThickness出于某种原因应大于1(我猜的Fill刷覆盖它),或不设置Fill属性,StrokeThickness 1作品。