주로 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의 요소를 조작 할 수 있습니까?