将RenderTransform应用于EllipseGeometry

时间:2011-12-13 15:21:16

标签: c# wpf rendertransform

我希望将RenderTransform的内容应用于EllipseGeometry的物理属性,这意味着应用变换会更改EllipseGeometry的Center / RadiusX / RadiusY属性。我这样做的原因是,我有一个绘图程序,你可以在其中绘制椭圆,在绘图后你可以缩放/旋转/平移椭圆,我在引擎盖上应用为原始Path对象上的RenderTransforms(其&# 34; Data"属性是EllipseGeometry对象)。现在,对于我的绘图程序中的其他几何图形(贝塞尔曲线,直线,圆弧等),在将数据保存到文件时,我使用以下方法应用RenderTransforms。

    Geometry clone = linePath.Data.Clone();
    clone.Transform = linePath.RenderTransform(); //Which is a TransformGroup in my case
    Geometry transformedGeometry = clone.GetFlattenedPathGeometry();

这给我留下了一个干净的几何图形," linePath"的RenderTransform已经应用。现在,我可以轻松地将此几何体的内容保存到" Mini Syntax"中的文件中。并在以后重新加载它。我知道我可以对EllipseGeometry使用相同的方法,但结果是描述转换的EllipseGeometry的近似PathGeometry,当我从文件重新加载数据时,我不知道将结果转换回EllipseGeometry的方法。目前,对于图形中的EllipseGeometry对象,我保存物理属性(Center / Radius / etc),然后将相应的RenderTransform保存为文件的XAML字符串。然后在加载时我只需从属性创建EllipseGeometry并应用保存的RenderTransform。

现在,这种方法有效,但我觉得保存翻译的椭圆几何图形比其他几何图形更清晰。我也在我的应用程序的其他地方使用RenderTransforms作为物理转换到EllipseGeometries,并且变通方法变得更加丑陋和丑陋,所以我想确定这样做的过程(如果它甚至可能)。

提前致谢!

修改 只是为了让问题更加开放,我并没有承诺使用EllipseGeometry,因为我不知道如何使用它来描述RenderTransform中可能存在的所有不同变换(即旋转)。因此,如果有其他方式或其他几何形状可以使用,提供类似椭圆的"行为,我肯定有兴趣听到它。

0 个答案:

没有答案