색상의 알파값
색상은 투명도인 알파값도 설정할 수 있습니다. 예: 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을 채웁니다. 색상의 알파 값은 125SolidBrush 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();
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 중국어 홈페이지를 참고해주세요. !