C# GDI+ 기술

Dec 17, 2016 am 10:01 AM

GDI+ 개요

GDI+는 이전 버전의 Windows에 포함된 그래픽 장치 인터페이스인 GDI의 후속 제품입니다. Windows XP 운영 체제의 하위 시스템을 구성하는 API(응용 프로그래밍 인터페이스)입니다. GDI+ 기본 클래스의 기본 네임스페이스 및 설명: System.드로잉--기본 그리기 기능과 관련된 대부분의 클래스, 구조, 열거형 및 대리자를 포함합니다. System.드로잉.드로잉2D - 앤티앨리어싱, 지오메트리 변환, 그래픽 경로를 포함한 대부분의 고급 2D 및 벡터 드로잉 작업을 지원합니다. System.드로잉.이미징--이미지(비트맵, GIF 파일 등) 처리에 도움이 되는 다양한 클래스입니다. System.드로잉.인쇄--프린터나 인쇄 미리 보기 창을 출력 장치로 사용할 때 사용되는 클래스입니다. 시스템.드로잉.디자인--디자인 중 사용자 인터페이스 확장과 관련된 미리 정의된 여러 대화 상자, 속성 시트 및 기타 사용자 인터페이스 요소입니다. System.드로잉.Text – 글꼴 및 글꼴 모음에 대한 고급 작업을 수행하는 클래스입니다.

기본 그래픽 그리기

Graphics 클래스는 GDI+의 핵심입니다. Graphics 개체는 GDI+ 그리기 화면을 나타내며 디스플레이 장치에 개체를 그리는 방법을 제공합니다. Graphics 클래스는 직선, 곡선, 그래픽, 이미지 및 텍스트를 그리는 방법을 캡슐화합니다. 이는 직선, 곡선, 그래픽, 이미지 및 텍스트를 그리는 데 GDI+에서 사용되는 클래스입니다.

직선 그리기

Graphics 클래스의 DrawLine 메서드는 오버로드될 수 있으며 주로 좌표 쌍으로 지정된 두 점을 연결하는 선을 그리는 데 사용됩니다. (1) 두 개의 Point 구조체를 연결하는 선을 그립니다.

public void DrawLine(Pen pen, Point pt1,Point pt2)
로그인 후 복사

펜: 펜 개체로 선 색상, 너비 및 스타일을 결정합니다. pt1:연결될 첫 번째 점을 나타내는 점 구조. pt2:연결할 두 번째 점을 나타내는 점 구조. (2) 좌표쌍으로 지정된 두 점을 연결하는 선을 그립니다.

Public void DrawLine(Pen pen,int x1,int y1,int x2,int y2)
로그인 후 복사

직선 그리기 샘플 코드:

private void button1_Click(object sender, EventArgs e)
{
    Graphics graphics = this.CreateGraphics();
    Pen myPen = new Pen(Color.Blue, 2);
    graphics.DrawLine(myPen, 50, 30, 170, 30);
}
로그인 후 복사

직사각형 그리기

Graphics 클래스의 DrawRectangle 메서드는 오버로드될 수 있습니다. (1) Rectangle 구조로 지정된 직사각형을 그립니다.

public void DrawRectangle(Pen pen,Rectangle rect)
로그인 후 복사

펜: 펜 개체로 선 색상, 너비 및 스타일을 결정합니다. ret: 직사각형을 그리는 Rectangle 구조체를 나타냅니다. 예:

Rectangle rect = new Rectangle(0, 0, 80, 50);
로그인 후 복사

(2) 너비와 높이의 좌표 쌍으로 지정된 직사각형을 그립니다.

public void DrawRectangle(Pen pen, int x, int y, int width, int height)
로그인 후 복사

펜: 펜 개체로 선 색상, 너비 및 스타일을 결정합니다. x: 그릴 사각형의 왼쪽 위 모서리의 x 좌표입니다. y: 그릴 사각형의 왼쪽 위 모서리의 y 좌표입니다. 너비와 높이는 각각 너비와 높이를 나타냅니다. 직사각형 그리기를 위한 샘플 코드:

private void button1_Click(object sender, EventArgs e)
{
    Graphics graphics = this.CreateGraphics();
    Pen myPen = new Pen(Color.Blue, 2);
    graphics.DrawRectangle(myPen, 70, 20, 80, 50);
}
로그인 후 복사

타원 그리기

Graphic 클래스의 DrawEllipse 메소드(오버로드 가능) 주로 Rectangle 구조에 의해 지정된 경계가 있는 타원을 그리는 데 사용됩니다. (1) Rectangle 구조로 지정된 경계를 사용하여 타원을 그립니다.

public void DrawEllipse(Pen pen, Rectangle rect)
로그인 후 복사

(2) 테두리로 정의된 타원을 그립니다(테두리는 좌표, 높이, 너비의 쌍으로 지정됩니다).

public void DrawEllipse(Pen pen, int x, int y, int width, int height)
로그인 후 복사

타원 그리기 샘플 코드:

private void button1_Click(object sender, EventArgs e)
{
    Graphics graphics = this.CreateGraphics();
    Pen myPen = new Pen(Color.Blue, 3);
    Rectangle myRectangle = new Rectangle(70, 20, 100, 60);
    graphics.DrawEllipse(myPen, myRectangle);
}
로그인 후 복사

그리기 Graphics 클래스의 Circle Arc

DrawArc 메서드는 오버로드될 수 있습니다. (1) Rectangle 구조로 지정된 타원의 일부를 나타내는 호를 그립니다.

public void DrawArc(Pen pen, Rectangle rect, float startAngle, float sweepAngle)
로그인 후 복사

펜: 펜 개체로 선 색상, 너비 및 스타일을 결정합니다. ret: 타원의 경계를 정의하는 직사각형 구조입니다. startAngle: x축에서 호의 시작점까지 시계 방향으로 측정된 각도(도)입니다. SweepAngle: startAngle 매개변수에서 호의 끝점까지 시계 방향으로 측정된 각도(도)입니다. (2) 좌표, 너비 및 높이의 쌍으로 지정된 타원 부분을 나타내는 호를 그립니다.

public void DrawArc(Pen pen, int x, int y, int width, int height, int startAngle, int sweepAngle)
로그인 후 복사

호 그리기 예제 코드:

private void button1_Click(object sender, EventArgs e)
{
    Graphics graphics = this.CreateGraphics();
    Pen myPen = new Pen(Color.Blue, 5);
    Rectangle myRectangle = new Rectangle(70, 20, 100, 60);
    graphics.DrawArc(myPen, myRectangle,210,120);
}
로그인 후 복사

다각형 그리기

에는 Graphics 개체, Pen 개체 및 Point(또는 PointF) 개체 배열이 필요합니다. Graphics 클래스는 DrawPolygon 메서드를 제공합니다. Pen 개체는 너비, 색상 등 다각형을 렌더링하는 데 사용되는 선 특성을 저장하고 Point(또는 PointF) 개체 배열은 다각형의 개별 정점을 저장합니다. 다시 로드할 수 있습니다. (1) 일련의 Point 구조로 정의된 다각형을 그립니다.

public void DrawPolygon(Pen pen, Point[] pints)
로그인 후 복사

(2) PointF 구조 집합으로 정의된 다각형을 그립니다.

public void DrawPolygon(Pen pen, PointF[] pints)
로그인 후 복사

다각형 그리기 샘플 코드:

private void button1_Click(object sender, EventArgs e)
{
    Graphics graphics = this.CreateGraphics();
    Pen myPen = new Pen(Color.Red, 5);
    Point point1 = new Point(80, 20);
    Point point2 = new Point(40, 50);
    Point point3 = new Point(80, 80);
    Point point4 = new Point(160, 80);
    Point point5 = new Point(200, 50);
    Point point6 = new Point(160, 20);
    Point[] myPoints = { point1, point2, point3, point4, point5, point6 };
    graphics.DrawPolygon(myPen, myPoints);
}
로그인 후 복사

그리기 기본 샘플 바

카디널 스플라인은 일련의 개별 곡선이 연결되어 더 큰 곡선을 형성하는 것입니다. 점 배열과 장력 매개변수로 지정된 스플라인은 날카로운 모서리나 곡선의 가파른 변화 없이 배열의 각 점을 부드럽게 통과합니다. (1) 지정된 포인트 구조 세트를 통과하는 기본 스플라인을 그립니다.

public void DrawCurve(Pen pen, Point[] points)
로그인 후 복사

(2) 지정된 장력을 사용하여 지정된 포인트 구조 세트를 통과하는 카디널 스플라인을 그립니다.

public void DrawCurve(Pen pen, Point[] points, float tension)
로그인 후 복사

장력: 0.0F보다 크거나 같은 값, 곡선의 장력을 지정합니다. (3) 배열의 시작을 기준으로 한 오프셋에서 시작하여 지정된 PointF 구조 세트를 통해 기본 스플라인을 그립니다.

public void DrawCurve(Pen pen, Point[] points, int offset, int numberOfSegments)
로그인 후 복사

offset:从points参数数组中的第一个元素到曲线中起始点的偏移量。numberOfSegments:起始点之后要包含在曲线中的段数。 (4)使用指定张力,绘制经过一组指定Point结构的基数样条。

public void DrawCurve(Pen pen, Point[] points, int offset, int numberOfSegments, float tension)
로그인 후 복사

绘制基数样条示例代码:

private void button1_Click(object sender, EventArgs e)
{
    Graphics graphics = this.CreateGraphics();
    Pen myPen = new Pen(Color.Red, 5);
    Point point1 = new Point(50, 20);
    Point point2 = new Point(60, 30);
    Point point3 = new Point(70, 25);
    Point point4 = new Point(100, 50);
    Point point5 = new Point(130, 30);
    Point point6 = new Point(150, 45);
    Point[] myPoints = { point1, point2, point3, point4, point5, point6 };
    graphics.DrawCurve(myPen, myPoints, 1.0F);
}
로그인 후 복사

绘制贝赛尔样条

贝塞尔样条是由4个点指定的曲线:两个端点(p1,p2)和两个控制点(c1,c2)。曲线开始于p1,结束于p2。曲线不经过控制点,但是控制点像磁铁一样,在某些方向上拉伸曲线并影响曲线弯曲的方式。 调用Graphics类的DrawBezier方法,可重载。 (1)绘制由4个Point结构定义的贝塞尔样条。

public void DrawBezier(Pen pen, Point pt1, Point pt2, Point pt3, Point pt4)
로그인 후 복사

4个Point点分别表示起始点、第一个控制点、第二个控制点和结束点。
(2)绘制由4个表示点的有序坐标对定义的贝塞尔样条。

public void DrawBezier(Pen pen, float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4)
로그인 후 복사

x2,y2及x3,y3分别表示第1个、第2个控制点相应坐标。顺序和第一种方法类似。
绘制贝塞尔样条示例代码:

private void button1_Click(object sender, EventArgs e)
{
    Graphics graphics = this.CreateGraphics();
    Pen myPen = new Pen(Color.Red, 5);
    float startX = 50.0F;
    float startY = 80.0F;
    float controlX1 = 150.0F;
    float controlY1 = 20.0F;
    float controlX2 = 230.0F;
    float controlY2 = 50.0F;
    float endX = 190.0F;
    float endY = 80.0F;
    graphics.DrawBezier(myPen, startX, startY, controlX1, controlY1, controlX2, controlY2, endX, endY);
}
로그인 후 복사

绘制图形路径

路径是通过组合直线、矩形和简单的曲线而形成的。在GDI+中,GraphicsPath对象允许将基本构造块收集到一个单元中,调用一次Graphics类的DrawPath方法,就可以绘制出整个单元的直线、矩形、多边形和曲线。

public void DrawPath(Pen pen, GraphicsPath path)
로그인 후 복사

pen:Pen对象,确定线条颜色、宽度和样式。path:要绘制的GraphicsPath图形路径。 PS:注意要引用System.Drawing.Drawing2D命名空间。
绘制图形路径示例代码:

private void button1_Click(object sender, EventArgs e)
{
    Graphics graphics = this.CreateGraphics();
    GraphicsPath myGraphicsPath = new GraphicsPath();
    Pen myPen = new Pen(Color.Blue, 1);
    Point[] myPoints = { new Point(15, 30), new Point(30, 40), new Point(50, 30) };
    myGraphicsPath.AddArc(15, 20, 80, 50, 210, 120);
    myGraphicsPath.StartFigure();
    myGraphicsPath.AddCurve(myPoints);
    myGraphicsPath.AddString("图形路径", new FontFamily("华文行楷"), (int)FontStyle.Underline, 50, new PointF(20, 50), new StringFormat());
    myGraphicsPath.AddPie(180,20,80,50,210,120);
    graphics.DrawPath(myPen, myGraphicsPath);
}
로그인 후 복사

   


更多C# GDI+技术相关文章请关注PHP中文网!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

C 언어로 다양한 기호를 사용하는 방법 C 언어로 다양한 기호를 사용하는 방법 Apr 03, 2025 pm 04:48 PM

C 언어 커버 산술, 할당, 조건, 논리, 비트 연산자 등의 기호의 사용 방법은 기본 수학 연산에 사용되며, 할당 연산자는 할당 및 추가, 곱하기, 분할 할당에 사용되며, 곱하기 및 분할 할당에 사용되며, 조건에 따라 조건 운영자가 사용되며, 비트 오퍼레이터에 사용되며, 스페셜 오퍼레이터는 비트 수준의 운영에 사용됩니다. 포인터, 파일 종료 마커 및 비수통 값.

C 현에서 숯의 역할은 무엇입니까? C 현에서 숯의 역할은 무엇입니까? Apr 03, 2025 pm 03:15 PM

C에서 숯 유형은 문자열에 사용됩니다. 1. 단일 문자를 저장하십시오. 2. 배열을 사용하여 문자열을 나타내고 널 터미네이터로 끝납니다. 3. 문자열 작동 함수를 통해 작동합니다. 4. 키보드에서 문자열을 읽거나 출력하십시오.

C 언어로 특수 문자를 처리하는 방법 C 언어로 특수 문자를 처리하는 방법 Apr 03, 2025 pm 03:18 PM

C 언어에서 특수 문자는 다음과 같은 탈출 시퀀스를 통해 처리됩니다. \ n 라인 브레이크를 나타냅니다. \ t는 탭 문자를 의미합니다. char c = '\ n'과 같은 특수 문자를 나타 내기 위해 탈출 시퀀스 또는 문자 상수를 사용하십시오. 백 슬래시는 두 번 탈출해야합니다. 다른 플랫폼과 컴파일러마다 다른 탈출 시퀀스가있을 수 있습니다. 문서를 참조하십시오.

C 언어에서 Char와 WCHAR_T의 차이 C 언어에서 Char와 WCHAR_T의 차이 Apr 03, 2025 pm 03:09 PM

C 언어에서 char와 wchar_t의 주요 차이점은 문자 인코딩입니다. char ascii를 사용하거나 ascii를 확장하고, wchar_t는 유니 코드를 사용합니다. Char는 1-2 바이트를 차지하고 WCHAR_T는 2-4 바이트를 차지합니다. Char는 영어 텍스트에 적합하며 WCHAR_T는 다국어 텍스트에 적합합니다. Char_t는 널리 지원되며, 컴파일러 및 운영 체제가 유니 코드를 지원하는지 여부에 따라 다릅니다. Char는 문자 범위가 제한되며 WCHAR_T는 더 큰 문자 범위를 가지며 특수 함수는 산술 작업에 사용됩니다.

멀티 스레딩과 비동기 C#의 차이 멀티 스레딩과 비동기 C#의 차이 Apr 03, 2025 pm 02:57 PM

멀티 스레딩과 비동기식의 차이점은 멀티 스레딩이 동시에 여러 스레드를 실행하는 반면, 현재 스레드를 차단하지 않고 비동기식으로 작업을 수행한다는 것입니다. 멀티 스레딩은 컴퓨팅 집약적 인 작업에 사용되며 비동기식은 사용자 상호 작용에 사용됩니다. 멀티 스레딩의 장점은 컴퓨팅 성능을 향상시키는 것이지만 비동기의 장점은 UI 스레드를 차단하지 않는 것입니다. 멀티 스레딩 또는 비동기식을 선택하는 것은 작업의 특성에 따라 다릅니다. 계산 집약적 작업은 멀티 스레딩을 사용하고 외부 리소스와 상호 작용하고 UI 응답 성을 비동기식으로 유지 해야하는 작업을 사용합니다.

C 언어로 Char를 변환하는 방법 C 언어로 Char를 변환하는 방법 Apr 03, 2025 pm 03:21 PM

C 언어에서 숯 유형 변환은 다른 유형으로 직접 변환 할 수 있습니다. 캐스팅 : 캐스팅 캐릭터 사용. 자동 유형 변환 : 한 유형의 데이터가 다른 유형의 값을 수용 할 수 있으면 컴파일러가 자동으로 변환됩니다.

C 언어 합계의 기능은 무엇입니까? C 언어 합계의 기능은 무엇입니까? Apr 03, 2025 pm 02:21 PM

C 언어에는 내장 합계 기능이 없으므로 직접 작성해야합니다. 합계는 배열 및 축적 요소를 가로 질러 달성 할 수 있습니다. 루프 버전 : 루프 및 배열 길이를 사용하여 계산됩니다. 포인터 버전 : 포인터를 사용하여 배열 요소를 가리키며 효율적인 합계는 자체 증가 포인터를 통해 달성됩니다. 동적으로 배열 버전을 할당 : 배열을 동적으로 할당하고 메모리를 직접 관리하여 메모리 누출을 방지하기 위해 할당 된 메모리가 해제되도록합니다.

C 언어로 Char Array를 사용하는 방법 C 언어로 Char Array를 사용하는 방법 Apr 03, 2025 pm 03:24 PM

char 어레이는 문자 시퀀스를 C 언어로 저장하고 char array_name [size]로 선언됩니다. 액세스 요소는 첨자 연산자를 통해 전달되며 요소는 문자열의 끝점을 나타내는 널 터미네이터 '\ 0'으로 끝납니다. C 언어는 strlen (), strcpy (), strcat () 및 strcmp ()와 같은 다양한 문자열 조작 함수를 제공합니다.

See all articles