>  기사  >  백엔드 개발  >  C# GDI+ 프로그래밍(2)

C# GDI+ 프로그래밍(2)

高洛峰
高洛峰원래의
2016-12-17 10:17:481390검색

일반적으로 사용되는 그리기 기능

DrawArc는 호를 그립니다

예: graphic.DrawArc(pen,0,0,200,200,90,120)

두 번째 매개변수는 시작을 나타냅니다. 각도이며 마지막 매개변수는 호의 스팬 각도입니다. 예를 들어 시작 각도는 90이고 호의 폭은 120도입니다.

빨간색이 호입니다. 비슷한 방법으로는 부채꼴 모양을 그리는 DrawPie와 부채꼴 모양을 채우는 FillPie가 있습니다. 모두 시작 각도와 확장 각도가 있습니다.

DrawPolygon 다각형 그리기

예: Point []pt=new Point[]{new Point(0,50),new Point(0,100),new Point(100,100)};
graphic.DrawPolygon(pen, pt);

포인트 배열은 각 포인트의 위치와 포인트 수를 지정합니다. DrawPolygon으로 그린 ​​다각형은 닫히고 DrawPolygon은 자동으로 첫 번째 점과 마지막 점을 연결합니다.

DrawCurve는 기본 스플라인을 그립니다

예: Point[] pt = new Point[] { new Point(0, 0), new Point(100, 50),new Point(200, 0 )};
graphic.DrawCurve(pen, pt, 1.5f);

마지막 매개변수는 장력 값을 나타냅니다. 저는 이 그리기 기능에 대해 잘 모릅니다. 뭔가가 일어났습니다. 자유롭게 사용할 수는 없다고 할 수 있습니다.

곡선을 형성하려면 점이 3개 이상 있어야 합니다. GDI+ 참조 자료에서 복사한 그림을 볼 수 있습니다.

DrawBezier는 베지어 스플라인을 그립니다

예: graphic.DrawBezier(pen, 100, 0, 200, 20, 0, 80, 100, 100)

Bezier Searle 스플라인 4개의 포인트로 구성되어 있습니다. 첫 번째 점과 마지막 점은 직선의 두 점 역할을 하고 나머지 두 점은 자석 역할을 합니다. 비록 선이 이 두 자석 점을 통과하지 못하더라도

이 두 자석 점은 빨아들일 것입니다. 그것을 향해. 따라서 베셀 스플라인이 형성됩니다.

Path GraphicsPath

GraphicsPath 클래스 속성 System.드로잉.드로잉2D 네임스페이스

Path는 다양한 선으로 구성됩니다. 그러면 직사각형도 4개로 구성된다고 볼 수 있습니다. 직선, 원은 여러 개의 호로 구성된 것으로 볼 수도 있습니다.

그래서 GraphicsPath 클래스에는 AddLine 선형 경로, AddEllipse 타원형 경로, AddRectangle 직사각형 경로,

AddBezier Bezier 경로, AddString 문자열 경로 대기와 같은 다양한 모양을 추가하기 위한 경로 함수가 있습니다.

이러한 경로는 추가되었으므로 볼 수 없습니다. Graphics 클래스의 DrawPath 함수를 사용하여 브러시로 경로의 궤적을 설명할 수 있습니다.

예제 보기:

private void formPaint(Object sender, PaintEventArgs e)
{
Graphics Graphics = e.Graphics;
펜 펜 = 새 펜 (색상. FromArgb(0, 255, 0), 2);
직사각형 ect = new Rectangle(10, 10, 100, 100);
GraphicsPath grcPath = new GraphicsPath();
      grcPath.AddRectangle (right) ;
              grcPath.AddEllipse(ect); ath.AddString("A", famFont, (int) FontStyle.Underline, 80f, ret, null);
//경로 그리기
그래픽. DrawPath(pen, grcPath);
}

PathGradientBrush

사용 예:

private void formPaint(Object sender, PaintEventArgs e)
{
//경로 생성
GraphicsPath path = new GraphicsPath();
Rectangle ect = new Rectangle(0, 0, 100, 100);
path.AddRectangle(direct);
//경로 브러시 만들기
PathGradientBrush Brush = new PathGradientBrush(path);
// 중심점 색상은 흰색
브러시입니다. CenterColor = Color.White;
//경로(점)의 색상은 검은색입니다
Brush.SurroundColors = new Color[] { Color.Black };
//경로 브러시로 직사각형을 채웁니다.
e.Graphics.FillRectangle(brush, ect);
}

위 중심점의 색상은 흰색이고, 경로(점)의 색상은 검정색입니다. 각각의 중심점 경로의 모든 점은 흰색에서 검은색으로 그라데이션을 갖습니다.

PathGradientBrush로 계산된 중심점을 사용하지 않으려면 중심점을 직접 지정할 수도 있습니다. 예를 들어 Brush.CenterPoint = new Point(20, 50);

많은 경로 브러시가 있습니다. 다양한 색상 그라데이션

이전 선형 그라디언트 페인팅에서 여러 색상 그라디언트가 도입되었으므로 여러 색상 그라디언트의 경로도 유사합니다. 예를 직접 살펴보겠습니다. :

Private Void Formpaaint(Object Sender, Painteventargs E)

{
// 경로 생성
GraphicSpath Path = New Graphicspath ()
RECTANGLE RECT; = 새 직사각형(0, 0, 100, 100 );
path.AddRectangle(ect);
//패스 브러시 생성
PathGradientBrush 브러시 = new PathGradientBrush(path);

/ /ColorBlend 객체 생성 및 여러 색상 그라데이션 지정 정보 COLORBLEND COLOR_BLEND = New ColorBlend ()

// 여러 색상 지정
color_blend.colors = new color [] {color.red, color.green, color.white};
/// /색상 범위 지정
         color_blend.Positions=new float[]{0/3f,2/3f,3/3f};                                                                                                                   보간 색상         브러시가 직사각형을 채웁니다.
e.Graphics.FillRectangle(brush, ect);
}

중심점의 색상은 color_blend.Colors 배열의 마지막 색상입니다. 여러 색상 그라데이션과 마찬가지로 중심점부터 넣을 수 있습니다. 경로의 모든 지점까지 직선으로 간주됩니다. 그러면 이 선의 2/3는 어떤 색상에서 어떤 색상으로의 그라데이션이고, 1/3은 어떤 색상에서 어떤 색상으로의 그라데이션입니다.

위는 빨간색에서 녹색까지의 그라데이션 범위입니다: 0~2/3, 녹색에서 흰색(중심점 색상): 2/3~1 전체 직선의 길이를 다음과 같이 대체한다고 가정합니다. 1. 또한 중심점 위치도 사용자 정의할 수 있습니다.

점으로 구성된 경로 브러시

예:

private void formPaint(Object sender, PaintEventArgs e)
{
Rectangle ect = new Rectangle(0, 0, 100, 100);
Point []pts =new Point[]{new Point (50,0),new Point(0,100),new Point(100,100)};
PathGradientBrush 브러시=new PathGradientBrush(pts);
//중앙 색상
Brush.CenterColor= 브러시 Color.White;
                                                                                                                                        🎜 >경로 브러시로 직접 생성되는 이러한 종류의 그래픽은 GraphicsPath를 거치지 않고 3개 이상의 점을 지정할 수도 있습니다. 그러면 경로 브러시가 자동으로 이러한 점을 연결하여 그래픽을 형성합니다. 하지만 채우기 범위는 이러한 점에 의해 형성된 그래픽으로 제한됩니다. 위와 마찬가지로 이 브러시는 직사각형을 채우는 데 사용되지만

삼각형 모양 너머의 부분은 채워지지 않습니다. 이는 그래픽 경로와 동일하며 경로 채우기에만 제한됩니다. 이 그래픽 생성은 AddPolygon 다각형 경로 기능과 같은 GraphicsPath를 통해 완료될 수도 있습니다. 그런 다음 Graphics 클래스의 FillPolygon 함수로 채웁니다.

AddLines를 사용하여 경로 함수를 추가할 수도 있습니다. 이 함수는 직선으로 구성된 그래프이지만 기본적으로 두 점으로 구성됩니다.

단, 형성된 그래픽을 닫아야 합니다. 그렇지 않으면 원하는 결과를 얻을 수 없습니다. 그런 다음 FillPath를 호출하여 경로를 채웁니다.

AddLines 예:

private void formPaint(Object sender, PaintEventArgs e)

{

//경로 생성

GraphicsPath path = new GraphicsPath();

직사각형 ect = new Rectangle(0, 0, 100, 100);

Point[] pts = new Point[] { new Point(50, 0), new Point(0, 100), new Point(100, 100 )};
path.AddLines(pts);
PathGradientBrush 브러시 = new PathGradientBrush(path);
//중앙 색상
brush.CenterColor =Color.White;
//경로 점의 색상
Brush.SurroundColors=new Color[]{Color.Black};

e.Graphics.FillPath(brush, path);

}

FillPath 기능은 DrawPath와 비슷하지만 DrawPath는 브러시를 사용하여 경로를 설명하는 반면 FillPath는 "채우기"를 사용하여 경로를 설명합니다.

FillPath로 채워진 경로에는 특정 제한 사항이 있으며 닫혀 있습니다. 갈등을 일으키지 마십시오.

PathGradientBrush 클래스의 SurroundColors 속성 멤버, 경로 지점의 여러 색상

이전에는 하나의 색상만 지정했는데 SurroundColors는 Color 배열이므로 여러 색상을 지정할 수 있습니다. 지정되는 것은 그림의 모서리 점의 색상입니다.

예를 들어 삼각형에는 세 개의 꼭지점에 대해 세 가지 색상을 지정할 수 있지만 삼각형만 있기 때문에 네 가지 색상을 지정할 수는 없습니다. 세 개의 모서리가 있으며 범위를 초과하면 오류가 발생합니다.

직사각형도 마찬가지고 4가지 색상을 지정할 수 있는데, 직사각형처럼 지정한 색상 개수가 꼭지점 개수보다 적으면 한 꼭지점의 색상만 지정합니다.

그런 다음 나머지 모서리 점은 SurroundColors 배열의 마지막 색상 값을 사용합니다.

경로 브러시의 첫 번째 예를 들어 수정하고 네 모서리 점의 색상을 지정해 보겠습니다. 다음과 같습니다:

private void formPaint(Object sender, PaintEventArgs e)
{
//경로 만들기
GraphicsPath path = new GraphicsPath();
Rectangle ect = new Rectangle(0, 0, 100, 100);
path.AddRectangle(direct);
//경로 브러시 만들기
PathGradientBrush Brush = new PathGradientBrush(path);
// 중심점 색상은 흰색
브러시입니다. CenterColor = Color.White;
                                                                                              | 직사각형 채우기
e.Graphics.FillRectangle(brush, ect);
}

네 모서리의 색상 검은 색, 빨간색, 파란색, 녹색과 같이 눈으로 대략적으로 점을 볼 수 있습니다. 왼쪽 위(0,0), 오른쪽 위(100, 0), 오른쪽 아래(100, 100),

왼쪽 아래(0, 100)의 네 꼭지점에 해당합니다.

이 그라데이션 브러시가 어떻게 보이는지, 무엇을 기반으로 하는지 이야기해 보겠습니다. 먼저 SurroundColos에서 꼭지점(0, 0)을 Color.Black으로 지정하고,

꼭지점(100, 0)을 Color.Red로 지정하여 이 두 점을 하나의 도형으로 연결할 수 있습니다. 일직선. 이 직선에도 검정색에서 빨간색으로 그라데이션이 있습니다. 그리고 이 직선이 그 길 위에 있습니다.

그러면 이 경로(직선)의 각 지점이 서로 다른 색상을 갖게 됩니다.

예를 들어 (0, 0)은 검정색이고, (1, 0)은 연한 검정색입니다. . . . . (99,0)은 진한 빨간색입니다. (100,0)은 빨간색입니다.

중심점의 색상이 흰색이므로 중심점에서 0,0까지의 직선은 흰색에서 검정색으로의 그라데이션이고, (1,0)까지의 흰색에서 연한 검정색으로의 그라데이션입니다. .

다른 모서리 지점의 그라데이션도 마찬가지입니다.

이러한 규칙에 따라 위의 그라데이션이 형성됩니다.

또 다른 삼각형 예:

private void formPaint(Object sender, PaintEventArgs e)

{

//경로 생성
GraphicsP ath path = new GraphicsPath(); 🎜> Point []pts = new Point[] { new Point(50, 0), new Point(0, 100), new Point(100, 100) };
path.AddLines(pts);

PathGradientBrush 브러시=new PathGradientBrush(path);
//중심 색상 흰색

Brush.CenterColor=Color.White;

//모서리 색상: 빨간색, 녹색, 파란색.
Brush.surrourroundcolors = new color [] {color.red, color.green, color.blue};
// 경로를 페인트 경로로 사용
e.Graphics.fillpath (brush, path);
}

위의 지식 포인트를 이해한 후 다섯개 별 모양의 예를 만들어 볼 수 있습니다(경로 그라데이션 브러시를 사용하고 다양한 모서리 점 색상을 사용).


더 많은 C# GDI+ 프로그래밍(2) 관련 글은 PHP 중국어 홈페이지를 주목해주세요!

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