我是Silverlight的新手。刚刚创建了我的第一个显示deepzoom图像的应用程序。
寻找一些如何在Silverligth中显示矢量图形的指针。图形全部为2D,是一系列线(x1y1,x2y2),点(xy),基本形状。数据以ASCII文本文件提供。
从文件中读取数据并在SL中绘制的方式是什么?我是否需要先将矢量对象转换/转换为图像(XAML)?从哪里开始?
理想情况是所有矢量对象都应该可以通过编程方式或用户操作进行选择。
谢谢, VAL
答案 0 :(得分:2)
我的知识没有直接绘图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的脚本,以便进行编译。
答案 1 :(得分:0)
首先,您有实际访问文件的问题。
获取文件内容
如果您将这些文件保存在服务器的某个位置,则可以使用WebClient
使用DownloadStringAsync
获取文件。
另一方面,如果用户要在本地打开文件,则需要使用OpenFileDialog
类要求他们打开文件,然后在OpenText
对象上使用FileInfo
OpenFileDialog
提供读取字符串数据。
<强>解析强>
这是你的格式,所以你必须自己编码。
__生成UI元素_
您不必将其转换为Xaml。由于您希望这些矢量项是可单独选择的元素,因此您可能希望使用Shape
中的System.Windows.Shapes
类型集,即Elipse
,Line
,{{ 1}},Path
,Polygon
和Polyline
。
毫无疑问,有问题的格式可以定义这些元素相对于固定的0,0点的位置。因此,用于显示这些内容的最佳面板是Rectangle
。
您将读取每个向量项,选择创建一个适当形状的实例,根据项中的数据设置其属性。您需要在Canvas
中确定其正确位置,并使用Canvas
和Canvas.Left
附加属性。将形状添加到Canvas.Top
的{{1}}集合。