看不出中风

时间:2012-01-29 01:30:14

标签: wpf inheritance shape

我从形状派生,这就是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.

但是没有任何东西被吸引,有谁知道我做错了什么?顺便说一句,背景和笔画是不同的颜色。

2 个答案:

答案 0 :(得分:0)

StrokeThickness由于某种原因应该大于1(我猜是Fill画笔覆盖它),或者不设置Fill属性,{{1} 1作品。

答案 1 :(得分:0)

中风始终位于Fill之上。低于1.0的厚度完全没有问题,尽管非常薄的笔划自然会变得不可见。

填充正好填充Shape的几何体。笔划渲染几何体的轮廓,笔划的一半位于内部,一半位于形状之外。

从不将StrokeThickness添加到Shape的宽度(无论如何都只能按预期的方式工作)。有关Shape属性的行为方式,请参阅MSDN。

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

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