2010-05-28 1 views
2

Silverlight를 처음 사용했습니다. Deepzoom 이미지를 보여주는 첫 번째 응용 프로그램을 만들었습니다.Silverlight의 벡터 그래픽

Silverligth에서 벡터 그래픽을 표시하는 방법을 찾으십시오. 그래픽은 모두 2D로되어 있으며 일련의 선 (x1y1, x2y2), 점 (xy), 기본 모양입니다. 데이터는 ASCII 텍스트 파일로 사용할 수 있습니다.

파일에서 데이터를 읽고 SL로 그릴 방법은 무엇입니까? 먼저 벡터 객체를 이미지 (XAML)로 변환/변환해야합니까? 어디서 시작하나요?

이상적인 경우는 모든 벡터 객체를 프로그래밍 방식으로 또는 사용자 동작별로 선택할 수 있어야합니다.

감사합니다, 발

+0

합리적인 단순 항목을 설명하는 ASCII 텍스트의 작은 스 니펫을 포함하십시오. – AnthonyWJones

답변

2

내 knoweldge에 직접 드로잉 API가 없다, 그러나 당신은 별도로 시각적 트리에 다양한 모양을 추가하여 값을 추가 할 수 있습니다.

당신은 가능성이 차례로 Path 클래스를 포함 할 것이다 찾고있는 코드, PathFigurePolyLineSegment (또는 가능 LineSegment). 그것은 XAML로 파일을 변환하는 스크립트를 작성 조사 가치가있을 수도 있습니다

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); 

편집 아스키 텍스트 파일의 데이터가 런타임에 변경할 수없는 경우 : 아래

사각형을 그립니다 몇 가지 코드 그래서 컴파일 될 수 있습니다.

+0

Richard에게 감사드립니다. 데이터는 런타임에 변경되지 않으므로 XAML 컴파일을 살펴 보겠습니다. 좋은 주말 되십시오. Val – val

0

먼저 파일에 실제로 액세스하는 문제가 있습니다. 당신은 당신이 DownloadStringAsync을 사용하여 파일을 가져 WebClient을 사용 어딘가에 서버 측 개최 이러한 파일이있는 경우

파일 내용

얻기. 한편

사용자가 로컬 파일을 열 경우

그런 다음 파일을 연 다음 OpenFileDialog는 문자열 데이터를 읽을 제공하는 FileInfo 객체에 OpenText를 사용하도록 요청하는 OpenFileDialog 클래스를 사용합니다.

그럼 당신이해야합니다, 그래서 그것의 당신의 형식은 자신의 것을 코드에 구문 분석.

__Generating UI는

당신은 XAML로 변환 할 필요가 없습니다를 elements_. 당신이이 벡터 항목을 개별적으로 선택 요소로 원하기 때문에 당신은 아마 System.Windows.Shapes 즉, Elipse, Line, Path, Polygon, PolylineRectangle에서 발견 Shape 유형의 집합을 사용하고 싶습니다.

의심 할 여지없이 형식이 고정 된 0,0 지점에 상대적인 이러한 요소의 위치를 ​​정의 할 수 있습니다. 따라서 이들을 표시하는 데 가장 적합한 패널은 Canvas입니다.

각 Vectored 항목을 통해 적절한 모양 중 하나의 인스턴스 만들기를 선택하면 해당 항목의 데이터를 기반으로 해당 속성을 설정합니다. Canvas에서 정확한 위치를 확인하고 Canvas.LeftCanvas.Top 속성을 첨부해야합니다. 모양을 CanvasChildren 컬렉션에 추가합니다.

+0

알아 들었습니다. 나는 주말에 그것을 시도 할 것이다. 신속한 답변을 보내 주셔서 감사합니다. 건배, 발 – val