【问题标题】:Can Path.Data creation be simplified in code?可以在代码中简化 Path.Data 创建吗?
【发布时间】:2019-05-30 14:04:55
【问题描述】:

我在 UWP 中有一个 Canvas,需要在代码隐藏中在其上绘制路径。我有它的工作,但它似乎不必要的冗长,特别是考虑到我需要在 switch-case 语句中有四个实例。我想知道是否有办法简化代码,或者至少将其合并为一行:

C#

Rect door = new Rect(left, top, width, height);
RectangleGeometry doorGeometry = new RectangleGeometry();
doorGeometry.Rect = door;
doorGroup.Children.Add(doorGeometry);
path.Data = doorGroup;

我尝试将它放在如下一行中,但在 IntelliSense 中收到了几个“没有带有 1 个元素的构造函数”错误。有没有一种方法可以简化/减少使用的代码量?

GeometryGroup doorGroup = new GeometryGroup(new RectangleGeometry(new Rect(left, top, width, height);

【问题讨论】:

  • 没有其他方法可以设置Path.Data

标签: c# canvas uwp rectangles pathgeometry


【解决方案1】:

您无法仅使用内置 API 以更简单的方式编写它。但是,您可以编写自己的基于 "builder" pattern 的类,该类可以具有 Fluent API,允许您“作为单个语句”构建路径数据。

请参阅 this blog post 作为流畅构建器的示例。

【讨论】:

  • 感谢博文链接,这是一篇有趣的文章。我最终做的(在看到你的答案之前)是创建一个函数,该函数接受 left、top、width 和 height 参数,并返回一个 GeometryGroup 对象。这样重复代码被最小化,switch 块保持简洁。在这种情况下,我不确定 DoorPath 是否保证了整个类,就像流畅设计所需要的那样,但对于更重要的对象,我肯定可以看到流畅设计方法的吸引力。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-27
  • 2021-03-26
  • 2021-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多