(Programmin)(WPF) UI 캔버스 형상 그리기 방법 요약

명령

1. 도형 그리기의 종류
2. 그리기 방법 1 – 이미지
3. 그리기 방법 2 – Shape.Path


1. 도형 그리기의 종류

네가 하고 싶은 것

아래와 같이 개체는 WPF의 캔버스에서 점과 선으로 정의됩니다.
당기는 것이다


그런데 그리는 방법과 클래스가 너무 많아서 헷갈리고 정보가 없네요
나는 내가 배운 것을 시도하고 요약했다.

기하학, GeometryDrawing, ImageDrawing, 모양, DrawingContext, 경로
드로잉 이미지 등

비슷하지만 클래스가 다르고 사용 방법이 다릅니다.
그리는 방법과 순서에 따라 수업을 구성하고 싶습니다.

모양 정의

기하학 수업 모양 클래스
파생 클래스
네임스페이스 창문. 미디어 창문. 형성
유도 동결 가능 –
애니메이션 가능 –
기하학
UI 요소
프레임워크 요소 –
모양
형성 타원기하학
선 기하학
직사각형 기하학
타원

직사각형
다중선
형성
그룹으로
매질
지오메트리 그룹 엑스 -> 폼의 객체
자식으로 그룹화할 수 있습니다.
-> 형상 상속
객체 속성
차이 1 객체는 자신을 그릴 수 없습니다.
-> 그림 또는 경로
다음을 통해 이미지 속성을 지정해야 합니다.
이 개체를 직접 그릴 수 있습니다.
-> 이미지 속성 조정 가능
차이 2 더 간단하고 쉽게
Freezable 기능이 있습니다.
-> 개체에 대한 권한 및 액세스를 제어합니다.
내부 패널과 대부분의 컨트롤에서 모두 접근 가능하다.
-> FrameworkElement 파생의 특성으로 Heavy

+) 별도의 Drawing 개체도 있지만 이 개체에는
기하학 그림
그림 그리기
글리프실행그림
캐릭터 그룹이 있습니다
이들은 모두 Window.Media 네임스페이스에 있습니다.

그래요 드로잉 방법 1에서 GeometryDrawing을 사용했고 당시 사용
위의 DrawingImage 클래스와 ImageDrawing은 다른오전!


2. 그리기 방법 1 – 이미지

기하학(GeometryGroup) → 기하학도면 →
DrawingImage → 캔버스 페인팅

도형 자체는 그리기 속성을 정의할 수 있습니다.
그럼 쉽게 Canvas에서 Geometry 클래스를 렌더링하는 방법무엇인가요

먼저 Windows.System에는 기본적으로 Point라는 개체가 있음을 알아두십시오.
도트(더블 X, 더블 Y)
(+X: → 방향, +Y: ↓ 방향)

1단계. Geometry -> GeometryGroup 클래스로 그룹화(선택 사항)

한 번에 여러 도형을 그리고 그룹화한다고 가정합니다.

단일 형상만 그릴 경우에는 그룹화가 필요하지 않습니다.

double X0, Y0 = 0;
double X1, Y1 = 100;

GeometryGroup gG = new GeometryGroup();

// EllipaseGeometry ( Point, radiusX, radiusY )
EllipseGeometry E = new EllipseGeometry(new Point(X0,Y0), 2, 2);

// PathGeometry (Point from, Point to)
LineGeometry L = new LiseGeometry(new Point(X0,Y0), new Point(X1,Y1));

// 2개의 Geometry를 Group으로 묶기
gG.Children.Add(E);
gG.Children.Add(L);

2단계. 드로잉을 정의하는 GeometryDrawing 클래스 만들기

Geometry 또는 GeometryGroup을 Drawing 개체로 캐스팅할 수 있습니다.
그만큼 Pen 및 Brush와 같은 실제 드로잉 메서드는 GeometryDrawing 클래스에 정의되어 있습니다.하다.

System.Windows.Media로
개요 수업과
인테리어 페인팅 브러시 클래스 정의.
색상을 정의하려면 빗질하다 수업도 있습니다.

GeometryDrawing gD = new GeometryDrawing();

gD.Pen = new Pen(Brushes.Black, 2);
gD.Brush = Brushes.DarkRed;

// 위에서 저장한 GeometryGroup
// 단일 Geometry만 넣어도 된다.
gD.Geometry = gG


GeometryDrawing은 위 코드에서 정의한 세 가지를 지원합니다.

3단계. DrawingImage 클래스를 생성하여 이미지로 변환

형식이 아니라 그리는 방법인 GeometryDrawing을 만들었습니다.

따라서 Image 형식으로 DrawingImage 클래스를 생성하여 설정해야 합니다.

// gD : 위에서 만든 GeometryDrawing
DrawingImage = new DrawingImage(gD)


DrawingImage는 위에서 정의한 바와 같이,
매개변수를 입력한 도면은 Animable 클래스를 상속받기 때문에
마찬가지로 Animatable에서 상속받은 GeometryDrawing도 매개변수로 입력할 수 있습니다.



+) 추가 설명

그러나 위의 표에서 파생 관계
드로잉 클래스 → 이미지 드로잉 클래스다르다!

애니메이션 가능 → DrawingSource → 드로잉 이미지
애니메이션 가능 → 그리기 → 그림 그리기
자아

위에서 사용한 기하학 그림하다
애니메이션 가능 → 그리기 → 기하학 그림오전.
혼동하지 말자.

다시 말해서, 그림 그리기, 기하학 그림같은 층이다
드로잉 이미지다른 레이어입니다.

그러나 모든 창. 미디어 네임스페이스는 동일합니다.


4단계. DrawingImage를 WPF 이미지 소스로 지정

이제 WPF에서 만든 캔버스에서 실제로 이미지를 만들고 할당할 수 있습니다.


시험. xaml

x:Name=”image”를 사용하여 코드 숨김에 연결하고

// Soruce를 위에서 만든 DrawingImage 객체로 할당
image.Source = dI;

// 가시성 속성 저장
image.Visibility = Visibility.Visible;

5단계. 업데이트하려면

전체 클래스 생성 프로세스 요약

기하학(GeometryGroup) → 기하학도면 →
DrawingImage → 이미지가 드디어 연결되었습니다.

예를 들어 이미지를 업데이트할 때마다 B. 추가 또는 삭제
내가 이 모든 일을 겪기를 원하십니까?

답은 필요없다 GeometryGroup을 변경하기만 하면 됩니다!

C#의 개체에는 기본적으로 참조가 있습니다. (C++의 포인터 개념)
따라서 그릴 개체를 실제로 저장합니다. GeometryGroup 전용
추가, 삭제 이렇게 하면 이미지가 자동으로 업데이트됩니다.

예) 마우스 클릭 시 해당 위치에 점을 생성하는 코드



마우스 왼쪽 클릭 이벤트

간단하게 _gG(GeometryGroup). 그것은 단지 아이들을 만듭니다.추가,
실시간으로 이미지가 변경됩니다(포인트 추가).

+) 사진 문제


3. 그리기 방법 2 – Shape.Path 사용

Shape 클래스는 고유한 Drawing 메서드를 제공합니다.

…쓰다