首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找到未填充的StreamGeometry和RectangleGeometry之间的交集的可靠方法

找到未填充的StreamGeometry和RectangleGeometry之间的交集的可靠方法
EN

Stack Overflow用户
提问于 2018-06-13 14:03:54
回答 1查看 28关注 0票数 0

我有以下单元测试:

代码语言:javascript
复制
[TestMethod]
public void IntersectionTest()
{
    var lineStreamGeometry = new StreamGeometry { FillRule = FillRule.EvenOdd };
    using (var sgc = lineStreamGeometry.Open())
    {
        sgc.BeginFigure(new Point(), false, false);
        sgc.LineTo(new Point(10, 0), true, true);
        sgc.LineTo(new Point(0, 10), true, true);
    }
    lineStreamGeometry.Freeze();
    var lineGeomtry = new LineGeometry(new Point(), new Point(10,0));
    var rectangleGeometry = new RectangleGeometry(new Rect(new Point(-20, -20), new Point(20, 20)));
    var geometryFillContains = rectangleGeometry.FillContainsWithDetail(lineGeomtry);
    var streamFillContains = rectangleGeometry.FillContainsWithDetail(lineStreamGeometry);
    Assert.AreEqual(geometryFillContains, streamFillContains);
}

这两行都在我的RectangleGeometry中,但是与StreamGeometry的交集结果是不正确的。之所以发生这种情况,是因为BeginFigureBeginFigure参数是false

我可以将isFilled设置为true,以使单元测试满足,但当RectangleGeometry落入它所导致的不可见的闭合三角形内时,就会产生问题。

我正在寻找一个函数,它适用于各种几何,只有当两个几何图形都是填充/闭多边形时,FillContainsWithDetail才能正确工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-14 06:17:54

Pen分配给StreamGeometry解决了我的问题:

代码语言:javascript
复制
var streamFillContains = rectangleGeometry.FillContainsWithDetail(lineStreamGeometry.GetWidenedPathGeometry(new Pen(null, 0.1)));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50839222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档