gpt4 book ai didi

wpf - 将几何图形转换为 wpf 中的路径(使用混合?)

转载 作者:行者123 更新时间:2023-12-04 14:29:12 27 4
gpt4 key购买 nike

我的问题很简单。

如何转换此代码:

<Path>
<Path.Data>
<EllipseGeometry Center="5,4" RadiusX="4" RadiusY="4"/>
</Path.Data>
</Path>

变成类似的东西
<Path Data="M 0 5 L 3 10 10 0"/>

(请注意,第二个产生一个复选标记,而不是一个椭圆。这只是为了说明目的,我的目标就是:找出什么序列给出一个椭圆)

编辑:我还阅读了有关 xaml 中贝塞尔曲线的文档,并且完全意识到我可以通过计算贝塞尔曲线的确切点来简单地生成正确的代码以获得椭圆,但我不想去麻烦做这个计算我自己,所以我想知道是否有一种简单的方法可以做到这一点(也许在 Blend 中)

最佳答案

这显示了如何从代码中做到这一点。我不确定这是否能解决你的问题 - 你说“混合?”在标题中,我不知道在 Blend 中执行此操作的方法。但我希望这可能会有所帮助。

第一步是转换 EllipseGeometry变成 PathGeometry :

var geom = new EllipseGeometry(new Point(5, 4), 4, 4);
var pathGeometry = PathGeometry.CreateFromGeometry(geom);

一旦你有一个 PathGeometry您可以直接调用 ToString它会给你字符串表示:
string pathText = pathGeometry.ToString();

在我的系统上,这会产生以下相当冗长的文本:

"M9,4C9,6.20913899932317 7.20913899932317,8 5,8 2.79086100067683,8 1,6.20913899932317 1,4 1,1.79086100067683 2.79086100067683,0 5,0 7.20913899932317,0 9,1.79086100067683 9,4z"

现在,如果您想最终得到将字符串输入 Xaml 时会得到的结果,则需要多一步,因为 Xaml 是您提供的表单:
<Path Data="M 0 5 L 3 10 10 0"/>

不会产生 PathGeometry .它产生 StreamGeometry ,这是一种更有效但固定的路径表示。 (主要区别在于您无法在 StreamGeometry 中获取表示各种图形和分段的单个对象,而使用 PathGeometry 可以。因此, StreamGeometry 更便宜。)

你可以得到一个 StreamGeometry从路径文本:
var streamGeometry = StreamGeometry.Parse(pathText);

然后如果你想在 Path只需构建它:
var p = new Path { Data = streamGeometry };

根据您的确切目标,可能有更有效的方法来做到这一点。 ( StreamGeometry 是一种更有效的表示,因为它最终创建的对象要少得多。但是我的代码到达该表示的路径不是很有效,所以你最好停止使用 PathGeometry 那非常第一个代码片段生成。或者,如果您的目标只是获取路径文本,那么 PathGeometry 也足以满足您的需求。)

关于wpf - 将几何图形转换为 wpf 中的路径(使用混合?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4437189/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com