如何从WPF C#中的rect获取数据?

时间:2019-07-22 08:11:46

标签: c# .net wpf

我已经靠左,顶,宽和高了。我想将其转换为Path并获取数据。

有没有办法做到这一点。我只想检查两个路径是否相互重叠并使用此方法。

任何建议将不胜感激。 TIA!

    Geometry geo1 = parentShape.Data.Clone();
    geo1.Transform = parentShape.RenderTransform;
    Geometry geo2 = childShape.Data.Clone();
    geo2.Transform = childShape.RenderTransform;
    geo1.FillContainsWithDetail(geo2);

编辑: 请看我的代码。让我知道我哪里错了:(

 private bool CheckIfOverlapping(Rect rect1, Rect rect2, double rotation)
    {

        Geometry geo1 = RotatedRect(rect1, 0);

        Geometry geo2 = RotatedRect(rect2, rotation);

        var response1 = geo1.FillContainsWithDetail(geo2);
        var response2 = geo2.FillContainsWithDetail(geo1);
        var response3 = geo2.FillContains(geo1);
        var response4 = geo1.FillContains(geo2);

        return response4 || response3 || response1 == IntersectionDetail.Intersects || response2 == IntersectionDetail.Intersects;

    }

    private static Geometry RotatedRect(Rect rect, double rotation)
    {
        var centerX = (rect.Left + rect.Right) / 2;
        var centerY = (rect.Top + rect.Bottom) / 2;

        return new RectangleGeometry
        {
            Rect = rect,
            Transform = new RotateTransform(rotation, centerX, centerY),
        };
    }
    public Main()
    {
            var rect1 = new Rect(3546.5, 2734, 0, 0);
            var rect2 = new Rect(3510, 2731, 60, 52);
                Debug.WriteLine(CheckIfChildIsInsideParent(rect1, rect2, 180));

    }

1 个答案:

答案 0 :(得分:0)

您可以使用以下方法从旋转的Rect创建几何:

private static Geometry RotatedRect(Rect rect, double rotation)
{
    var centerX = (rect.Left + rect.Right) / 2;
    var centerY = (rect.Top + rect.Bottom) / 2;

    return new RectangleGeometry
    {
        Rect = rect,
        Transform = new RotateTransform(rotation, centerX, centerY)
    };
}

像这样尝试:

var rect1 = new Rect(100, 100, 100, 100);
var rect2 = new Rect(200, 100, 100, 100);

var geo1 = RotatedRect(rect1, 45);
var geo2 = RotatedRect(rect2, 45);

Debug.WriteLine(geo1.FillContainsWithDetail(geo2));
相关问题