【问题标题】:Vector graphics in silverlightSilverlight 中的矢量图形
【发布时间】:2011-02-25 04:32:47
【问题描述】:

我是 Silverlight 的新手。刚刚创建了我的第一个显示深度缩放图像的应用程序。

寻找一些如何在 Silverligth 中显示矢量图形的指针。图形都是二维的,是一系列的线(x1y1,x2y2),点(xy),基本形状。数据以 ASCII 文本文件的形式提供。

从文件中读取数据并在 SL 中绘制的方式是什么?我是否需要先将矢量对象转换/翻译成图像 (XAML)?从哪里开始?

理想的情况是所有矢量对象都应该可以通过编程或用户操作进行选择。

谢谢, 值

【问题讨论】:

  • 包含一个描述合理简单项目的 ASCII 文本的小 sn-p。

标签: silverlight graphics vector


【解决方案1】:

据我所知,没有直接的绘图 API,但您可以通过向可视化树添加各种形状来单独添加值。

您要查找的代码可能涉及Path 类,进而涉及PathFigure 和PolyLineSegment(或者可能是LineSegment)。

下面是一些绘制正方形的代码:

PolyLineSegment segment = new PolyLineSegment();   
segment.Points.Add(new Point(0, 50));   
segment.Points.Add(new Point(50, 50));   
segment.Points.Add(new Point(50, 0));   
segment.Points.Add(new Point(0, 0));   

PathFigure figure = new PathFigure()
{
    StartPoint = new Point(0, 0)
};
figure.Segments.Add(segment);

PathGeometry geometry = new PathGeometry()
{
    Figures.Add(pathFigure)
};

Path path = new Path()
{
    Stroke = new SolidColorBrush(Colors.Black),
    StrokeThickness = 2,
    Data = pathGeometry
};

// To render, the Path needs to be added to the visual tree
LayoutRoot.Children.Add(path);

编辑如果 ASCII 文本文件中的数据在运行时无法更改,则可能值得研究编写一个将文件转换为 XAML 的脚本,以便对其进行编译。

【讨论】:

  • 谢谢理查德。数据不会在运行时更改,因此我将研究 XAML 编译。祝你周末愉快,瓦尔
【解决方案2】:

首先,您遇到了实际访问文件的问题。

获取文件内容

如果您将这些文件保存在服务器端的某处,那么您将使用WebClient 来获取使用DownloadStringAsync 的文件。

另一方面,如果用户要在本地打开文件,那么您需要使用 OpenFileDialog 类要求他们打开文件,然后在 OpenFileDialog 提供给的 FileInfo 对象上使用 OpenText读取字符串数据。

解析

这是你的格式,所以你必须自己编写代码。

__生成 UI 元素_

您不必将其转换为 Xaml。由于您希望这些矢量项是单独可选择的元素,那么您可能希望使用在System.Windows.Shapes 中找到的Shape 类型集,即Elipse、Line、Path、Polygon、@987654333 @ 和 Rectangle。

毫无疑问,所讨论的格式以某种方式定义了这些元素相对于固定 0,0 点的位置。因此,用于显示这些的最佳面板是 Canvas。

您将通读每个 Vectored 项目,选择创建一个适当形状的实例,根据项目中的数据设置其属性。您需要在 Canvas 中确定其正确位置并使用 Canvas.Left 和 Canvas.Top 附加属性。将形状添加到Canvas 的Children 集合中。

【讨论】:

  • 知道了。我会在周末试试。感谢您的及时回复。干杯,瓦尔
猜你喜欢
  • 1970-01-01
  • 2011-04-30
  • 1970-01-01
  • 2010-09-29
  • 1970-01-01
  • 1970-01-01
  • 2011-12-14
  • 2016-11-11
  • 1970-01-01
相关资源
最近更新 更多