백엔드 개발 C#.Net 튜토리얼 C# GDI+ 프로그래밍 (3)

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

Dec 17, 2016 am 10:14 AM

색상의 알파값

색상은 투명도인 알파값도 설정할 수 있습니다. 예: Color.FromArgb(120,255,255,255). FromArgb에는 4개의 매개변수가 있으며 첫 번째 매개변수는 Alpha 값을 지정합니다.
마지막 3개는 색상값 RGB입니다.
알파 값 범위는 0~255이며, 0은 완전 투명, 255는 불투명을 의미합니다.
반투명 브러시의 예를 살펴보세요.
private void formPaint(Object sender, PaintEventArgs e)
{
//경로 만들기
GraphicsPath path = new Graph icsPath();
직사각형 ect = new Rectangle(0, 0, 100, 100);
SolidBrush strBrush=new SolidBrush(Color.Orange);
e.Graphics.DrawString("ABCDEFGHIJK", new Font("黑体", 20f), strBrush, ret);
path.AddRectangle(ect);
//경로 브러시 만들기
PathGradientBrush 브러시 = new PathGradientBrush(path);
​​​ //중심점 색상
brush.CenterColor = Color.FromArgb(120,255,255,255);
                                                       ~ >

안티 앨리어싱

선의 앨리어싱 제거는 열거 유형인 Graphics 클래스의 SmoothingMode 속성 멤버를 설정하여 수행됩니다.

앤티앨리어싱을 설정하는 명령문 예: e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;

앨리어싱을 제거한 후 선이 훨씬 더 부드러워 보입니다.

해당 코드는 다음과 같습니다.

Pen pen=new Pen(Color.Green,2);

Rectangle ect1 = new Rectangle(0, 0, 100, 100);

e.Graphics.DrawEllipse(펜, 직사각형1);

                                                                                                                                                          새 직사각형(100, 0, 100, 100);

e.Graphics.DrawEllipse(pen, ect2);

스무딩 모드 열거형에는 앤티앨리어싱 수준을 다르게 설정하거나 앨리어싱을 제거하지 않을 수 있는 다른 멤버도 있습니다.

텍스트 앤티앨리어싱
표시된 텍스트를 앤티앨리어싱하려면 TextRenderingHint를 설정하기만 하면 됩니다.
샘플 코드:
private void formPaint(Object sender, PaintEventArgs e)
{
SolidBrush 브러시 = new SolidBrush(Color.Green);
e.Graphics.DrawString("ABCDEFGHIJKL", new Font("宋体", 15f), 브러시, 0, 20); e.Graphics.DrawString("ABCDEFGHIJKL", new Font("宋体", 15f), 브러시, 0, 50);                                                                       이러한 API를 호출할 수 있습니다. 그리고 많은 개념이 유사합니다. 예를 들어 창 핸들, 영역 핸들이 있습니다.

예를 들어 Region 클래스의 GetHrgn 함수는 지역 핸들을 가져올 수 있습니다.

그리고 영역이 무엇인지 더 잘 이해할 수 있도록 영역과 경로의 관계에 대해 이야기해 보겠습니다. 영역과 경로의 관계는 채워진 그래픽과 그래픽의 관계와 같습니다.

경로와 직사각형을 사용하여 영역을 만들 수 있습니다. Region의 생성자를 통해.

다음 예에서는 직사각형으로 두 영역을 만들고 채웁니다.

private void formPaint(Object sender, PaintEventArgs e)

{

//너비와 높이가 100인 직사각형 영역 2개

영역 Region1=new Region(new Rectangle(0 ,0,100,100)) ;

Region Region2=new Region(new Rectangle(50,50,100,100));

//브러시 1을 생성하고 영역 1을 채웁니다. 색상의 알파 값은 125

SolidBrush Brush1 = new SolidBrush( Color .FromArgb(125, 255, 0, 0));

e.Graphics.FillRegion(brush1, Region1);

//브러시 2를 만들고 영역 2를 채웁니다
SolidBrush Brush2 = new SolidBrush( Color. FromArgb(125, 0, 255, 0));
e.Graphics.FillRegion(brush2, Region2);
CombineRgn의 95개 함수도 언급되었으므로 해당 함수를 참조할 수 있습니다.

CombineRgn API 함수의 마지막 매개변수 nCombineMode는 두 영역을 병합하는 방법을 지정하므로 Region 클래스의 병합에도 유사한 기능이 있어야 합니다.

은 병합 방법을 나타내지만 Region 클래스는 매개변수로 지정되지 않고 다른 함수를 직접 호출합니다.

예를 들어 Region.Intersect 함수는 RGN_AND이고 Region.Union은 RGN_OR 병합 방법입니다. . Region1.Exclude는 RGN_DIFF입니다.

Region.Xor는 RGN_XOR 모드에서 병합됩니다.

nCombineMode 매개변수 설명:

>>>>>>> ;>>>>>>>>>>>>>>>>>>>>>>API CombineRgn에서 기능>>>>>>>>>>>>>>>>>>>>>>>> ;>>>>>> ;>>>>>>>>>>>>>>>>>>> ;

RGN_AND 겹침 두 영역의 일부

RGN_OR 두 영역을 결합

RGN_DIFF hSrcRgn1의 겹치지 않는 부분

RGN_XOR hSrcRgn1과 hSrcRgn2의 겹치지 않는 부분

이 함수로 병합하여 얻은 영역은 영역 2와 겹치지 않는 부분인 Complement 함수도 있습니다.

예제를 보세요:

private void formPaint(Object sender, PaintEventArgs e)
{
//너비와 높이가 100인 두 개의 직사각형 영역
Region1 =new Region(new Rectangle(0,0,100,100));
Region2=new Region(new Rectangle(50,50,100,100));
//영역을 사용합니다.
       지역1.Xor(region2); 1 ;
{
InitializeComponent();
//원형 경로 생성
GraphicsPath path = new GraphicsPath();

path.Add 타원(0, 0, 100, 100);

Region.IsVisible은 영역 내에 점(또는 직사각형)이 있는지 확인합니다.
예를 보면 원형 영역에 마우스가 들어가자마자 해당 영역이 표시됩니다. 빨간색.
public 부분 클래스 Form1: Form
{
//정상 상태에서 영역을 채우는 브러시
public SolidBrush norBrush=new SolidBrush(Color.Green);
//마우스는 in the Area 시간을 채우는 브러시
public SolidBrush hovBrush = new SolidBrush(Color.Red);
//마우스가 해당 영역 내에 있는지 여부
public bool hovFlag = false;
/ /원형 영역
공개 영역 영역;
공개 Form1()
초기화 구성 요소();
GraphicsPath 경로 = 새 GraphicsPath();
path.AddEllipse( 50, 50, 100, 100) ;
//경로를 통해 지역 생성
지역 = 새 지역(경로);
. 지역);

                                                                                                     ~     graphics = this.CreateGraphics();
//마우스가 해당 영역에 처음 들어갈 때
if (region.IsVisible(e.X, e.Y) && hovFlag != true)
{
           hovFlag = true;
Graphics.FillRegion(hovBrush, region);
           }
           //鼠标离开区域了
            else if (region.IsVisible(e.X, e.Y) != true && hovFlag)
            {
                hovFlag = false;
graphic.FillRegion(norBrush, 지역);
}
C# GDI+ 프로그래밍 (3) 관련 글은 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 옷 제거제

AI Hentai Generator

AI Hentai Generator

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

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

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

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

차세대 C 컴파일러를 추가하는 방법 차세대 C 컴파일러를 추가하는 방법 Mar 03, 2025 pm 05:44 PM

이 기사에서는 printf 내에서 \ n 탈출 시퀀스를 사용하여 C에서 Newline 문자를 만드는 방법을 설명하고 함수를 넣습니다. 기능을 자세히 설명하고 출력에서 ​​라인 브레이크 사용을 보여주는 코드 예제를 제공합니다.

C 언어로 Null의 대안은 무엇입니까? C 언어로 Null의 대안은 무엇입니까? Mar 03, 2025 pm 05:37 PM

이 기사는 C의 Null 포인터 단축의 도전에 대해 탐구합니다. 그것은 문제가 그 자체가 아니라 오용한다고 주장합니다. 이 기사는 사전 수준 점검, 포인터 이니셜을 포함한 수반을 방지하기위한 모범 사례에 대해 자세히 설명합니다.

어떤 C 언어 컴파일러가 더 낫습니까? 어떤 C 언어 컴파일러가 더 낫습니까? Mar 03, 2025 pm 05:39 PM

이 기사는 초보자가 C 컴파일러를 선택하도록 안내합니다. GCC는 사용 편의성, 광범위한 가용성 및 광범위한 리소스로 인해 초보자에게 가장 적합하다고 주장합니다. 그러나 GCC, Clang, MSVC 및 TCC도 비교하여 차이를 강조합니다.

Null은 C 언어로 된 현대 프로그래밍에서 여전히 중요합니까? Null은 C 언어로 된 현대 프로그래밍에서 여전히 중요합니까? Mar 03, 2025 pm 05:35 PM

이 기사는 현대 C 프로그래밍에서 NULL의 지속적인 중요성을 강조합니다. 발전에도 불구하고 NULL은 명시적인 포인터 관리에 중요하며, 유효한 메모리 주소가 없음을 표시하여 세분화 결함을 방지합니다. 최고의 PRAC

C 언어 컴파일러의 웹 버전은 무엇입니까? C 언어 컴파일러의 웹 버전은 무엇입니까? Mar 03, 2025 pm 05:42 PM

이 기사에서는 초보자를위한 온라인 C 컴파일러를 검토하여 사용 편의성 및 디버깅 기능에 중점을 둡니다. OnlineGDB 및 Repl.it는 사용자 친화적 인 인터페이스 및 유용한 디버깅 도구를 위해 강조 표시됩니다. 프로그램 및 컴파일과 같은 다른 옵션

C 언어 컴파일러에 의해 코드를 복사하는 방법 C 언어 컴파일러에 의해 코드를 복사하는 방법 Mar 03, 2025 pm 05:43 PM

이 기사에서는 C IDE의 효율적인 코드 복사에 대해 설명합니다. 복사는 컴파일러 기능이 아닌 IDE 기능이며 IDE 선택 도구 사용, 코드 폴딩, 검색/교체, Templa를 포함하여 효율성 향상을위한 세부 사항 전략을 강조합니다.

C 언어 온라인 프로그래밍 웹 사이트 C 언어 컴파일러 공식 웹 사이트 요약 C 언어 온라인 프로그래밍 웹 사이트 C 언어 컴파일러 공식 웹 사이트 요약 Mar 03, 2025 pm 05:41 PM

이 기사는 온라인 C 프로그래밍 플랫폼을 비교하여 디버깅 도구, IDE 기능, 표준 컴플라이언스 및 메모리/실행 제한과 같은 기능의 차이점을 강조합니다. "최고의"플랫폼은 사용자의 요구에 달려 있다고 주장합니다.

C 언어 컴파일러 설치 자습서 (컴퓨터 버전) C 언어 컴파일러 설치 자습서 (컴퓨터 버전) Mar 03, 2025 pm 05:41 PM

이 자습서는 Windows, MacOS 및 Linux에 C 컴파일을 설치하여 사용자를 안내합니다. 인기있는 컴파일러 (Mingw, Visual Studio, Xcode, GCC)에 대한 설치에 대해 자세히 설명하고 환경 변수 구성을 설명하며 문제 해결 단계를 제공합니다.

See all articles