矩形几何 - 矩形被剪切
本文关键字: | 更新日期: 2023-09-27 18:30:16
我正在尝试创建自定义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
来表示Rectangle
的Width
和Height
时,Rectangle
被完美地绘制了。
但是,如果我增加Width
和/或Height
,比如说200
和100
,绘制的形状不是Rectangle
而是仅包含两条线的形状(看起来它画了一个Rectangle
只是它被切割 - 好像我有一些边界可以绘制形状)。
我正在Canvas
上绘制Shape
,这是代码:
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);
}
这是什么原因呢?
DefiningGeometry
对形状的几何图形使用硬编码的位置和大小,因此在获取其几何图形时,形状会忽略MouseClick
中传递的大小。
使用定义几何图形中形状的宽度和高度(从属关系)属性将几何图形的大小调整为预期大小。