SHAPE(6)
-
[WPF로 도형그리기] 2. 도형 모델의 이해(A)
도형의 전체 모습을 살펴보겠습니다. 순서는 Line(선), Arrow(화살표), Ruler(자), Ellipse(타원), Rectangle(사각형), Text(텍스트)입니다. 모든 도형위에 두 점을 찍어보겠습니다. 모든 도형은 두개의 점, 즉 시작점(StartPoint)과 끝점(EndPoint)으로 표현할 수 있습니다. 이를 반영하여 모든 도형의 부모 클래스인 ShapeBase를 WPF의 Shape 클래스를 상속받아 추상클래스로 정의하겠습니다. // ShapeBase.csusing System.Windows;using System.Windows.Media;using System.Windows.Shapes;namespace DrawingShapesWPF{ public abstract class Sh..
2025.03.04 -
[WPF로 도형그리기] 1. 기본 환경설정 및 UI 구성
WPF를 활용하여 도형을 그리는 애플리케이션을 작성하겠습니다. 이 애플리케이션은 Visual Studio 2022와 .NET Framework 4.8.1 환경에서 작성되었습니다. 또한 작업의 편의를 위해 CommunityToolkit.MVVM(8.2.2)과 Microsoft.Xaml.Behaviors.Wpf(1.1.77) 등의 패키지를 설치하였습니다. 먼저 Behaviors 네임스페이스를 추가합니다. 그리고 Window의 위치와 크기를 조정하고 도형이 그려질 Canvas를 설정합니다. Canvas의 Background를 Transparent로 설정하지 않으면 마우스 이벤트를 받아들이지 못하는 현상이 발생하여 설정해 주었습니다. 다음은 MVVM 패턴 유지를 위해 CommunityToolki..
2025.02.28 -
[C#, WPF] 각도기 클래스 만들고 이를 이용하여 각도기 그리기(3)
마우스 움직임에 따른 각도기 그리기 과정을 나타내겠습니다. 주황색 영역은 Protractor 객체에 관한 부분이고 녹색 영역은 임시객체 영역입니다. 아래는 마우스를 좌클릭할 때 발생하는 이벤트를 처리하는 메소드입니다. private void cnvDrawing_MouseLeftButtonDown(object sender, MouseButtonEventArgs e){ Point currentPoint = e.GetPosition(cnvDrawing); if (!_isFirstLineDrawn) { DrawFirstLine(currentPoint); } else { DrawSecondLine(); }}private void DrawFirstLin..
2024.10.15 -
[C#, WPF] 각도기 클래스 만들고 이를 이용하여 각도기 그리기(2)
각도기를 그릴 때, 마우스의 움직임에 대해 살펴보겠습니다. 시작점(StartPoint)에서 좌클릭한 이후 마우스 버튼을 누른 채로 이동하면 선분1의 길이가 변하고 사용자가 원하는 지점에서 마우스 왼쪽 버튼을 떼게 되면 끝점1(EndPoint1)이 정해집니다. 그리고 다음번 좌클릭한 지점은 끝점2(EndPoint2)의 후보가 되며 실시간으로 변화하는 선분2와 호, 각도가 사용자에게 표시되어야 합니다. 이어 마우스 왼쪽 버튼을 떼게 되면 끝점2(EndPoint2)가 확정되고 각도기가 완성됩니다. 위와 같이 사용자의 실시간 마우스 움직임으로 도형의 모양이 결정됩니다. 앞서 정의한 Protractor 클래스의 OnRender 메소드는 사용자의 실시간 움직임을 반영하기에 충분하지 않고 선분 길이의 변화와 각도의 ..
2024.10.14 -
[C#, WPF] 각도기 클래스 만들고 이를 이용하여 각도기 그리기(1)
Shape 클래스를 상속받아 각도기 클래스를 생성하고 이를 마우스 조작으로 그리는 애플리케이션을 작성해 보겠습니다. 이 WPF 애플리케이션은 Visual Studio 2022, .NET8 환경에서 작성되었습니다. https://github.com/chaewonki/ProtractorSample GitHub - chaewonki/ProtractorSampleContribute to chaewonki/ProtractorSample development by creating an account on GitHub.github.com Shpae 클래스를 상속받아 Protractor(각도기) 클래스를 생성하겠습니다.using System.Windows;using System.Windows.Media;using Sy..
2024.10.14 -
[C#, WPF] Shape 클래스를 상속받아 커스텀 Ruler 만들기
WPF의 Shape 클래스를 상속받아 두 점 사이의 눈금이 있는 직선을 표시하고 두 점 사이의 거리를 픽셀 단위로 나타내는 Ruler 클래스를 만들어 활용하겠습니다. 이 WPF 프로젝트는 Visual Studio 2022, .NET8 환경에서 작성되었습니다. chaewonki/RulerSample (github.com) GitHub - chaewonki/RulerSampleContribute to chaewonki/RulerSample development by creating an account on GitHub.github.com 먼저 Shape 클래스를 상속받아 Ruler 클래스를 작성합니다. Ruler의 모양은 두 점 사이를 잇는 직선이며 직선 사이에 일정 간격으로 눈금이 표시됩니다. 아래는 Ru..
2024.08.09