RectangleGeometry - 切割矩形

时间:2016-01-13 07:10:39

标签: c# wpf

我尝试创建自定义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 50Width Height使用RectangleRectangle时,Width正在被完美绘制。

但是,如果我为Height200增加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);
}

可能是什么原因?

1 个答案:

答案 0 :(得分:0)

DefiningGeometry使用硬编码的位置和大小来表示形状的几何形状,因此在获取几何体时,Shape会忽略MouseClick中传递的大小。

使用DefiningGeometry中形状的宽度和高度(依赖性)属性将几何图形调整为预期大小。