我从形状派生,这就是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 :(得分: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。