将 XAML PathGeometry 转换为 WPF PathGeometry

2024-02-22

我想要由 LineSegment 组成的 PathGeometry。

所以,我使用第一个代码,但它是错误的。

PathGeometry temp = (PathGeometry)Geometry.Parse(
            "<PathGeometry.Figures>" +
                "<PathFigure StartPoint=\"193.5,283.5\" IsClosed=\"True\">" +
                    "<PathFigure.Segments>" +
                        "<LineSegment Point=\"418.5,283.5\" />" +
                        "<LineSegment Point=\"418.5,508.5\" />" +
                        "<LineSegment Point=\"193.5,508.5\" />" +
                        "<LineSegment Point=\"193.5,283.5\" />" +
                    "</PathFigure.Segments>" +
                "</PathFigure>" +
            "</PathGeometry.Figures>");

如果我使用第二个代码,它不是错误,但它不包含 LineSegment。结果将是 PolyLineSegment,但我想要 LineSegment。

PathGeometry temp = (PathGeometry)Geometry.Parse(
                "M29,329L30,331L31,334L33,336L34,338L36,341L38,343L39,345L41,348L44,352L46,353L47,355L48,356L49,357L49,357L50,358L50,358L51,357L50,356L51,354L51,350L53,342L54,334L58,320L60,315L61,311L63,308L63,306L64,304L65,303L65,302L66,301L66,301L66,301L66,301L66,301L66,301L66,301");

如何将 XAML PathGeometry 转换为 WPF PathGeometry?

Thanks


您用于解析 XAML 的代码不正确,您需要使用 XAML 读取器并将结果转换为所需的类型。例如。:

System.Windows.Shapes.Path newPath = (System.Windows.Shapes.Path)System.Windows.Markup.XamlReader.Parse("<Path xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation'  Width='20' Height='80' Stretch='Fill' Fill='#FF000000' Data='M 20,25.2941L 20,29.4118L 15.9091,29.4118L 15.9091,40L 12.2727,40L 12.2727,29.4118L 2.54313e-006,29.4118L 2.54313e-006,25.6985L 13.4872,7.62939e-006L 15.9091,7.62939e-006L 15.9091,25.2941L 20,25.2941 Z M 12.2727,25.2941L 12.2727,5.28493L 2.09517,25.2941L 12.2727,25.2941 Z M 20,65.2941L 20,69.4118L 15.9091,69.4118L 15.9091,80L 12.2727,80L 12.2727,69.4118L -5.08626e-006,69.4118L -5.08626e-006,65.6985L 13.4872,40L 15.9091,40L 15.9091,65.2941L 20,65.2941 Z M 12.2727,65.2941L 12.2727,45.2849L 2.09517,65.2941L 12.2727,65.2941 Z ' HorizontalAlignment='Left' VerticalAlignment='Top' Margin='140,60,0,0'/>");
LayoutRoot.Children.Add(newPath);

如果您使用代码隐藏,您是否有任何理由想要解析 XAML 片段?您可以通过编程方式创建路径,如下所示:

Path path = new Path();
PathGeometry geometry = new PathGeometry();
PathFigure figure = new PathFigure();
figure.StartPoint = new Point(10,10); 
figure.Segments.Add(new LineSegment()
{
  Point = new Point (20, 20)
});

// e.g. add more segments here

geometry.Figures.Add(figure);
path.Data = geometry;

路径由几何体组成,几何体由图形组成,图形由线段组成!

如果您想在代码后面使用简化的路径数据,您可以使用通用值转换器:

http://www.scottlogic.co.uk/blog/colin/2010/07/a-universal-value-converter-for-wpf/ http://www.scottlogic.co.uk/blog/colin/2010/07/a-universal-value-converter-for-wpf/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 XAML PathGeometry 转换为 WPF PathGeometry 的相关文章

随机推荐

  • Common LISP 和 Stack 中的数字类型边界在 GHCI 中流动

    第一个问题 Common LISP 和 Haskell 的新手 请友善 我在 Common LISP 中有一个函数 下面的代码 旨在判断三角形的面积是否是整数 整数 defun area int p a b c let s a b c 2
  • 将 Javascript 变量传递给 Codeigniter 中的 PHP 控制器

    大家好 我有这个 javascript 它必须传递一些变量 包括数组 我的问题是我无法使用 URL 传递这些值 因为我可能会处理许多值 我正在尝试使用 ajax JSON 但我无法检索值 这是我的 javascript function p
  • 如何使用 BeautifulSoup 获取标签内的 html 文本

    如何从示例 HTML 中提取数据beautifulsoup
  • Rails:表单提交后访问视图中的参数

    在我的 Rails 3 2 项目中 我有一个表单来创建一个新站点new html erb in app views sites div class field br div div class actions div 然后create函数于
  • IntelliJ找不到具体的方法

    我在以下代码中遇到编译错误 我不知道如何修复 String path document txt File file new File path Files readString file toPath cannot find symbol
  • Android:使用 xml 布局的日期选择器

    我尝试使用 xml 代码显示日期选择器 但它没有显示任何东西 我可以只通过java代码显示DatePicker吗 datePickerExample java public class datePickerExample extends A
  • 是否可以使用活动记录为表定义复合主键? [复制]

    这个问题在这里已经有答案了 我在没有 Rails 的 ruby 项目中使用 ActiveRecord 我需要为表定义复合主键 通常迁移会自动创建主键 是否可以使用活动记录为表定义自己的复合主键 有一些宝石可以赋予你这种能力 例如复合主键 h
  • 在 d3 中的图表上渲染之前简化线条

    我正在尝试绘制从蜂箱实时收集的数据 我们计划每 5 分钟收集一次数据 因此一年内将有大约 100 000 个数据点 我想设置一个图表来绘制数据 并在每次数据库更改时让新数据进入图表 使用 Meteor 我有一个简单的模型datacomb m
  • 如何使用 Python API 获取我在盈透证券的账户头寸?

    编辑 我找到了有关错误消息的解决方案 这是 IB 的 API 上的错误 我在下面作为答案显示的代码对于那些寻找干净的解决方案来从 IB 账户读取头寸和资产净值的人来说应该很有用 原来的问题 参见下面的解决方案 在此留下原始问题以获取上下文
  • React Apollo GraphQL 搜索/过滤

    我有一个使用 Apollo 客户端的带有 GraphQL 服务器的 React 项目 我试图弄清楚如何根据搜索文本和过滤选择更改查询结果 如果有人可以查看我的代码并给我一些帮助 我将不胜感激 对所有代码感到抱歉 我想也许它们都是相关的 服务
  • python:安装日志记录模块[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我有 python 3 5 尝试在 PyCharm 中安装日志记录包 但出现错误 安装包 logging 时发生错误 确保您使用此包支持的
  • 改造 JSON 反序列化对象的 $ref 对其原始副本的引用

    我使用 Microsoft Net 和 Breeze 来获取 API 并且使用 Retrofit 得到的结果嵌套了重复的相同对象 例如 EmployeeJob 具有 Customer 导航属性 因此 API 结果如下所示 Id 1 Cust
  • PHP 中的会话超时:最佳实践

    两者之间的实际区别是什么session gc maxlifetime and session cache expire 假设我希望用户会话在 15 分钟无活动后 而不是首次打开后 15 分钟 无效 其中哪一项对我有帮助 我也知道我能做到se
  • Rails:activeadmin 覆盖创建操作

    我有一个 activeadmin 资源 它具有 own to user 关系 当我在活动管理中创建模型的新实例时 我想将当前登录的用户关联为创建该实例的用户 我想这是相当标准的东西 所以 我让它工作 controller do def cr
  • 直接在 PhpStorm 中运行 PHP 脚本

    如何在 PhpStorm 中立即运行当前的 PHP 文件 如何像 PyCharm 一样在 PHPstorm 中执行 PHP 命令 在编辑器中右键单击 选择Run 或按 ctrl shift f10 用于命令行脚本执行 如果您想在网络服务器上
  • WPF ItemsControl:将项目的类型限制为特定类型

    我正在创建一个 WPF 自定义控件来作为练习 以在 VS 面板中显示日志消息 错误 警告 消息 该控件是一个 ItemControl 每个项目都是一条要显示的消息 但我必须将消息分类到正确的类别中 因此我需要每个项目公开一些内容 可能是一个
  • 在编写 WinAPI 应用程序时是否应该使用匈牙利表示法? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我最近开始学习 Win32 API 我讨厌匈牙利表示法 变量名中那些愚蠢的前缀 使代码看起来丑陋且几乎不可读 但是正如您可能知道的那样 它绝对无
  • C++中make_shared和普通shared_ptr的区别

    std shared ptr p1 std make shared foo std shared ptr p2 new Object foo 许多谷歌和 stackoverflow 帖子都在这方面 但我无法理解为什么make shared比
  • 在 C 中将可变长度数组声明为全局变量

    如何将可变长度数组声明为全局变量 当在扫描长度之前在函数中声明可变长度数组时 它会编译但不会运行 它给出了分段错误 当相同的声明语句移动到扫描语句下方时 它运行良好 如果我们想要一个全局可用于所有函数的可变长度数组 我们该怎么做呢 这里的问
  • 将 XAML PathGeometry 转换为 WPF PathGeometry

    我想要由 LineSegment 组成的 PathGeometry 所以 我使用第一个代码 但它是错误的 PathGeometry temp PathGeometry Geometry Parse