我是Silverlight的新手。刚刚创建了我的第一个显示deepzoom图像的应用程序。silverlight中的矢量图形
寻找一些指针如何在Silverligth中显示矢量图形。这些图形都是二维的,是一系列线条(x1y1,x2y2),点(xy),基本形状。数据以ASCII文本文件形式提供。
从文件中读取数据并在SL中绘制的方式是什么?我需要首先将矢量对象转换/转换为图像(XAML)吗?从哪儿开始?
理想的情况是所有的矢量obects应该可以通过编程或用户操作进行选择。
感谢, 瓦尔
我是Silverlight的新手。刚刚创建了我的第一个显示deepzoom图像的应用程序。silverlight中的矢量图形
寻找一些指针如何在Silverligth中显示矢量图形。这些图形都是二维的,是一系列线条(x1y1,x2y2),点(xy),基本形状。数据以ASCII文本文件形式提供。
从文件中读取数据并在SL中绘制的方式是什么?我需要首先将矢量对象转换/转换为图像(XAML)吗?从哪儿开始?
理想的情况是所有的矢量obects应该可以通过编程或用户操作进行选择。
感谢, 瓦尔
没有直接绘图API来我knoweldge,但你可以seperately通过添加各种形状,以可视化树添加值。
你正在寻找可能会涉及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编译。 周末愉快, Val – val 2010-05-28 19:28:27
您首先遇到了实际访问文件的问题。
获取文件内容
如果你有地方举行服务器端,那么你会用WebClient
获取使用DownloadStringAsync
文件这些文件。
在另一方面,如果用户打开一个本地文件,那么你需要使用OpenFileDialog
类,要求他们打开该文件,然后FileInfo
对象使用OpenText
是OpenFileDialog
提供读取字符串数据。
解析
好,是你的格式,所以你必须代码自己。
__Generating UI elements_
你不会将其转换为XAML。既然你想让这些载体项目是单独选择的元素,那么你可能要使用的一组中System.Windows.Shapes
即Elipse
,Line
,Path
,Polygon
,Polyline
和Rectangle
发现Shape
类型。
毫无疑问,有问题的格式有一些定义这些元素相对于固定的0,0点的位置。因此,用于显示这些内容的最佳面板是Canvas
。
您将通读每个向量项目,选择创建一个适当形状的实例,根据项目中的数据设置其属性。您需要确定其在Canvas
内的正确位置,并使用附加属性Canvas.Left
和Canvas.Top
。将形状添加到Canvas
的Children
集合中。
明白了。我会在周末尝试。感谢您的及时回复。 干杯, Val – val 2010-05-28 19:30:53
包含描述合理简单项目的ASCII文本的一小段代码。 – AnthonyWJones 2010-05-28 16:01:57