찾다

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으로 문의하세요.
c# .net이 당신에게 적합합니까? 적용 가능성을 평가합니다c# .net이 당신에게 적합합니까? 적용 가능성을 평가합니다Apr 13, 2025 am 12:03 AM

C#.netissuitable forenterprise-levelapplications는 richlibraries, androbustperformance, 그러나 itmaynotbeidealforcross-platformdevelopmentorwhenrawspeediscritical, wherelanguagesslikerustorthightordogrordogrognegrognegrognegrognecross-platformdevelopmentor.

.NET 내의 C# 코드 : 프로그래밍 프로세스 탐색.NET 내의 C# 코드 : 프로그래밍 프로세스 탐색Apr 12, 2025 am 12:02 AM

.NET에서 C#의 프로그래밍 프로세스에는 다음 단계가 포함됩니다. 1) C# 코드 작성, 2) 중간 언어 (IL)로 컴파일하고 .NET 런타임 (CLR)에 의해 실행됩니다. .NET에서 C#의 장점은 현대적인 구문, 강력한 유형 시스템 및 .NET 프레임 워크와의 긴밀한 통합으로 데스크탑 응용 프로그램에서 웹 서비스에 이르기까지 다양한 개발 시나리오에 적합합니다.

C# .NET : 핵심 개념 탐색 및 프로그래밍 기초C# .NET : 핵심 개념 탐색 및 프로그래밍 기초Apr 10, 2025 am 09:32 AM

C#은 Microsoft가 개발 한 최신 객체 지향 프로그래밍 언어이며 .NET 프레임 워크의 일부로 개발되었습니다. 1.C#은 캡슐화, 상속 및 다형성을 포함한 객체 지향 프로그래밍 (OOP)을 지원합니다. 2. C#의 비동기 프로그래밍은 응용 프로그램 응답 성을 향상시키기 위해 비동기 및 키워드를 기다리는 키워드를 통해 구현됩니다. 3. LINQ를 사용하여 데이터 컬렉션을 간결하게 처리하십시오. 4. 일반적인 오류에는 NULL 참조 예외 및 인덱스 외 예외가 포함됩니다. 디버깅 기술에는 디버거 사용 및 예외 처리가 포함됩니다. 5. 성능 최적화에는 StringBuilder 사용 및 불필요한 포장 및 Unboxing을 피하는 것이 포함됩니다.

C# .NET 응용 프로그램 테스트 : 장치, 통합 및 엔드 투 엔드 테스트C# .NET 응용 프로그램 테스트 : 장치, 통합 및 엔드 투 엔드 테스트Apr 09, 2025 am 12:04 AM

C#.NET 애플리케이션에 대한 테스트 전략에는 단위 테스트, 통합 테스트 및 엔드 투 엔드 테스트가 포함됩니다. 1. 단위 테스트를 통해 MSTEST, NUNIT 또는 XUNIT 프레임 워크를 사용하여 코드의 최소 단위가 독립적으로 작동합니다. 2. 통합 테스트는 일반적으로 사용되는 시뮬레이션 된 데이터 및 외부 서비스를 결합한 여러 장치의 기능을 확인합니다. 3. 엔드 투 엔드 테스트는 사용자의 완전한 작동 프로세스를 시뮬레이션하며 셀레늄은 일반적으로 자동 테스트에 사용됩니다.

Advanced C# .NET 튜토리얼 : ACE 귀하의 다음 선임 개발자 인터뷰Advanced C# .NET 튜토리얼 : ACE 귀하의 다음 선임 개발자 인터뷰Apr 08, 2025 am 12:06 AM

C# 수석 개발자와의 인터뷰에는 비동기 프로그래밍, LINQ 및 .NET 프레임 워크의 내부 작업 원리와 같은 핵심 지식을 마스터하는 것이 필요합니다. 1. 비동기 프로그래밍은 비동기를 통해 작업을 단순화하고 응용 프로그램 응답 성을 향상시키기 위해 기다리고 있습니다. 2.linq는 SQL 스타일로 데이터를 운영하고 성능에주의를 기울입니다. 3. Net Framework의 CLR은 메모리를 관리하며 가비지 컬렉션은주의해서 사용해야합니다.

C# .NET 인터뷰 질문 및 답변 : 전문 지식 레벨 업C# .NET 인터뷰 질문 및 답변 : 전문 지식 레벨 업Apr 07, 2025 am 12:01 AM

C#.NET 인터뷰 질문 및 답변에는 기본 지식, 핵심 개념 및 고급 사용이 포함됩니다. 1) 기본 지식 : C#은 Microsoft가 개발 한 객체 지향 언어이며 주로 .NET 프레임 워크에 사용됩니다. 2) 핵심 개념 : 위임 및 이벤트는 동적 바인딩 방법을 허용하고 LINQ는 강력한 쿼리 기능을 제공합니다. 3) 고급 사용 : 비동기 프로그래밍은 응답 성을 향상시키고 표현 트리는 동적 코드 구성에 사용됩니다.

C# .NET을 사용하여 마이크로 서비스 구축 : 건축가를위한 실용 가이드C# .NET을 사용하여 마이크로 서비스 구축 : 건축가를위한 실용 가이드Apr 06, 2025 am 12:08 AM

C#.net은 강력한 생태계와 풍부한 지원으로 인해 마이크로 서비스를 구축하는 데 인기있는 선택입니다. 1) ASP.NETCORE를 사용하여 RESTFULAPI를 작성하여 주문 생성 및 쿼리를 처리하십시오. 2) GRPC를 사용하여 마이크로 서비스 간의 효율적인 통신을 달성하고 주문 서비스를 정의하고 구현하십시오. 3) Docker Containerized 마이크로 서비스를 통해 배포 및 관리를 단순화합니다.

C# .NET 보안 모범 사례 : 일반적인 취약점 방지C# .NET 보안 모범 사례 : 일반적인 취약점 방지Apr 05, 2025 am 12:01 AM

C# 및 .NET의 보안 모범 사례에는 입력 확인, 출력 인코딩, 예외 처리, 인증 및 인증이 포함됩니다. 1) 일반 표현식 또는 내장 방법을 사용하여 악성 데이터가 시스템에 들어가는 것을 방지하기 위해 입력을 확인하십시오. 2) XSS 공격을 방지하기 위해 출력 인코딩 httputility.htmlencode 메서드를 사용하십시오. 3) 예외 처리는 정보 유출을 피하고 오류를 기록하지만 자세한 정보를 사용자에게 반환하지는 않습니다. 4) ASP.NETIDENITY 및 CAMPLES 기반 승인을 사용하여 신청서를 무단 액세스로부터 보호합니다.

See all articles

핫 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 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기