2011-10-30 3 views
2

주로 Treeview와 캔버스로 구성된 Visual Studio로 GUI를 만들고 싶습니다. 응용 프로그램의 기능은 처음에는 컴팩트 한 장치를 구성하기 위해 나중에 연결해야하는 캔버스에 다소 복잡한 모양을 만드는 것입니다. 최종 목적은 그래픽이 아니지만 기능과 절차를 나타냅니다. 특히, 사용자는 트 리뷰에서 모양 선택을 통해 캔버스와 그려 질 모양을 클릭 할 수 있습니다. 캔버스에 도형을 옮기고 선을 그 선들과 연결할 수도 있습니다. 응용 프로그램이 마우스 목록 (mouseEvents)의 확장 된 사용을해야한다는 것이 명백 해집니다.wpf의 기능을 확장하십시오.

wpf는 이와 같은 작업을 수행하기위한 적절한 유형의 프로젝트입니까?

모양이 단순하지는 않지만 내용, 기타 모양, 단추 및 마우스 이벤트가 포함되어 있다고 가정하면 생성을 위해 요구되는 코드는 제한되지 않습니다. MainWindow.xaml.cs에 전체적으로 있어야합니까? 아니면 구현을 여러 클래스 (예 : 각 셰이프에 대해 하나의 개별 클래스)로 나누는 것이 좋습니다. 예를 들어 사각형의 코드는 지금까지 있습니다 : 그것은 사각형을 만들 책임이 별도의 클래스를 구축하는 것이 합리적

Double rectWidth = 100; 
Double rectHeight = rectWidth; 

shapeToRender = new Rectangle() { Fill = Brushes.Red, Height = 100, Width = 100, RadiusX = 7, RadiusY = 7 }; 
shapeToRender.Stroke = Brushes.Black; 
shapeToRender.StrokeThickness = 3; 
currentShape = SelectedShape.Empty; 

Canvas.SetLeft(shapeToRender, e.GetPosition(canvasDrawingArea).X - rectWidth/2); 
Canvas.SetTop(shapeToRender, e.GetPosition(canvasDrawingArea).Y - rectHeight/2); 

canvasDrawingArea.Children.Add(shapeToRender); 

double xCircle1 = e.GetPosition(canvasDrawingArea).X + (rectWidth)/2; 
double yCircle1 = e.GetPosition(canvasDrawingArea).Y + (rectHeight)/4; 
double xCircle2 = xCircle1; 
double yCircle2 = e.GetPosition(canvasDrawingArea).Y - (rectWidth)/4; 
double xCircle3 = e.GetPosition(canvasDrawingArea).X - rectWidth/2; 
double yCircle3 = e.GetPosition(canvasDrawingArea).Y; 

Ellipse s1Ellipse = new Ellipse() { Fill = Brushes.Yellow, Height = 10, Width = 10 }; 
Canvas.SetLeft(s1Ellipse, xCircle1-5); 
Canvas.SetTop(s1Ellipse, yCircle1-5); 

canvasDrawingArea.Children.Add(s1Ellipse); 

Ellipse s2Ellipse = new Ellipse() { Fill = Brushes.Yellow, Height = 10, Width = 10 }; 
Canvas.SetLeft(s2Ellipse, xCircle2-5); 
Canvas.SetTop(s2Ellipse, yCircle2-5); 

canvasDrawingArea.Children.Add(s2Ellipse); 

Ellipse s3Ellipse = new Ellipse() { Fill = Brushes.Yellow, Height = 10, Width = 10 }; 
Canvas.SetLeft(s3Ellipse, xCircle3 - 5); 
Canvas.SetTop(s3Ellipse, yCircle3 - 5); 

canvasDrawingArea.Children.Add(s3Ellipse); 

인가? 어떻게 새로운 클래스 내부의 MainWindow와 mousEvents의 요소를 조작 할 수 있습니까?

답변

0

당신이 쓴 글에서부터 WPF가 정확히 필요한 것입니다. IMHO 다이어그램 항목을 나타내는 클래스 (사용자 지정 컨트롤)를 만들어야합니다. 다이어그램의 모든 모양에 대해 다른 클래스를 작성할 필요가 없습니다. 모양이 모두 다르다면 항상 다른 템플릿을 사용하여 다이어그램 컨트롤의 표현을 변경할 수 있습니다.

그런 것을 만드는 방법은 다소 복잡한 질문입니다. 필자는 WPF에서 다이어그램 디자이너를 만드는 데 유용한 문서를 발견했습니다. 실제로는 기사 모음입니다. 그들은 시작할 수있는 좋은 곳이 될 것입니다. Here's the link for the last article (이전 기사 링크가 포함되어 있기 때문에)

관련 문제