【发布时间】:2015-02-25 21:30:50
【问题描述】:
我进行了很多搜索以找到解决问题的方法。找不到任何东西。
这就是我的工作:
我通过网格上的点数组渲染多边形。多边形自动调整大小以匹配网格大小(统一)。我用以下几行得到了新的拉伸坐标,并用一种方法创建了椭圆:
var transform = myPolygon.RenderedGeometry.Transform;
foreach (var point in myPolygon.Points)
{
var transformedPoint = transform.Transform(point);
CreateEllipse(5, 5, Convert.ToDouble(Convert.ToString(transformedPoint).Split(';')[0]), Convert.ToDouble(Convert.ToString(transformedPoint).Split(';')[1]), gridPoly);
}
Ellipse CreateEllipse(double width, double height, double desiredCenterX, double desiredCenterY, Grid grid)
{
Ellipse ellipse = new Ellipse { Width = width, Height = height };
double left = desiredCenterX - (width / 2);
double top = desiredCenterY - (height / 2);
ellipse.Stroke = System.Windows.Media.Brushes.Black;
ellipse.Fill = System.Windows.Media.Brushes.DarkBlue;
ellipse.Margin = new Thickness(left, top, 0, 0);
grid.Children.Add(ellipse);
return ellipse;
}
问题是,如果我将多边形放在网格上,然后将椭圆放在网格上,它们将呈现精确的一半大小,而不是在正确的位置,甚至不是相对的。如果我将拉伸设置为“无”,也会发生同样的情况。
如果我在画布上渲染多边形和椭圆,它们会在每个多边形点上精确渲染,一切都很完美。此外,canvas 不支持stretch.Uniform。而且我需要动态地将多边形拟合到它的父对象中。
我的问题是,如何使用点位置数据在自动调整大小的多边形上渲染椭圆?
【问题讨论】:
标签: c# wpf coordinates polygon