矩形几何 - 矩形被剪切

本文关键字: | 更新日期: 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)));
        }
    }
}

当我分别使用 10050 来表示RectangleWidthHeight时,Rectangle被完美地绘制了。

但是,如果我增加Width和/或Height,比如说200100,绘制的形状不是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中传递的大小。

使用定义几何图形中形状的宽度和高度(从属关系)属性将几何图形的大小调整为预期大小。

相关文章:
  • 没有找到相关文章