我尝试创建自定义Shape
,首先创建了Rectangle
。
这是我的代码:
public class CustomRectangle : Shape
{
protected override Geometry DefiningGeometry
{
get
{
return new RectangleGeometry(new Rect(new Point(10, 10), new Size(100, 50)));
}
}
}
当我分别对100
50
和Width
Height
使用Rectangle
和Rectangle
时,Width
正在被完美绘制。
但是,如果我为Height
和200
增加100
和/或Rectangle
,则绘制的形状不是{ {1}}但是一个只包含两条线的形状(看起来它只绘制了一个Rectangle
,只是它被剪切了 - 好像我有一些边界int,可以绘制形状)。
我正在Shape
上绘制Canvas
,以下是代码:
private void MouseClick(object sender, MouseButtonEventArgs mouseButtonEventArgs)
{
if (mouseButtonEventArgs.LeftButton != MouseButtonState.Pressed)
{
m_downClick = new Point(-1, -1);
return;
}
m_downClick = mouseButtonEventArgs.GetPosition(sender as Canvas);
var newRect = new CustomRectangle {Width = 200, Height = 100, Stroke = Brushes.Black, Location = m_downClick};
Canvas.SetTop(newRect , m_downClick.Y);
Canvas.SetLeft(newRect , m_downClick.X);
(sender as Canvas).Children.Add(newRect);
}
可能是什么原因?
答案 0 :(得分:0)
DefiningGeometry
使用硬编码的位置和大小来表示形状的几何形状,因此在获取几何体时,Shape会忽略MouseClick
中传递的大小。
使用DefiningGeometry中形状的宽度和高度(依赖性)属性将几何图形调整为预期大小。