请参阅下面的代码。
我有一个我没有添加到WPF面板的对象 - 在这种情况下是一个简单的Canvas。当我调试行“var A1 = Poly.RenderedGeometry”时,我唯一看到的是{}。根本没有数据 - 没有pathGeometry,没有。
您能否解释一下我的代码中出了什么问题?如何知道我要添加到画布的Polygon是否不会与其他多边形碰撞?
// First and Second are 2 points, CreateNewTriangle adds a random point
// and creates a new triangle polygon
var Poly = CreateNewTriangle(First, Second);
if (G1.Children.Count == 0)
{
G1.Children.Add(Poly);
}
else
{
// In debug this row is empty - no actual geometry is present
var A1 = Poly.RenderedGeometry;
foreach (Polygon item in G1.Children)
{
if (!item.Equals(Poly))
{
var a2 = item.RenderedGeometry;
var col = A1.FillContainsWithDetail(a2);
if (!(col == IntersectionDetail.Empty))
{
IsAllGood = false;
break;
}
}
}
}
答案 0 :(得分:2)
您可能没有在元素中获取任何数据,因为该元素在屏幕上不存在,因此没有机会渲染,或者渲染过程尚未发生。你应该做的是强制Measure
和Arrange
来电,之后你应该为RenderedGeometry
var Poly = CreateNewTriangle(First, Second);
Poly.Measure(new Size(double.MaxValue, double.MaxValue));
Poly.Arrange(new Rect(new Point(0, 0), new Size(double.MaxValue, double.MaxValue)));