我是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