다음을 통해 공유


방법: 불투명 및 반투명 브러시를 사용하여 그리기

셰이프를 채울 때 Brush 개체를 Graphics 클래스의 채우기 메서드 중 하나에 전달해야 합니다. SolidBrush 생성자의 매개 변수 중 하나는 Color 개체입니다. 불투명 셰이프를 채우려면 색의 알파 구성 요소를 255로 설정합니다. 반투명 셰이프를 채우려면 알파 구성 요소를 1에서 254 사이의 임의 값으로 설정합니다.

반투명 셰이프를 채우면 셰이프 색이 배경색과 혼합됩니다. 알파 구성 요소는 셰이프 색과 배경색을 혼합하는 방법을 지정합니다. 알파 값이 0에 가까우면 배경색에 더 많은 가중치가 적용되고 알파 값이 255에 가까우면 셰이프 색에 더 많은 가중치가 적용됩니다.

예제

다음 예제에서는 비트맵을 그린 다음 이 비트맵과 겹치는 세 개의 타원을 채웁니다. 첫 번째 타원은 알파 구성 요소 255를 사용하므로 불투명합니다. 두 번째 및 세 번째 타원은 알파 구성 요소 128을 사용하므로 반투명합니다. 타원을 통과하는 배경 이미지를 볼 수 있습니다. CompositingQuality 속성을 설정하는 호출은 감마 보정과 함께 세 번째 타원에 대한 혼합이 수행되도록 합니다.

Bitmap bitmap = new Bitmap("Texture1.jpg");
e.Graphics.DrawImage(bitmap, 50, 50, bitmap.Width, bitmap.Height);

SolidBrush opaqueBrush = new SolidBrush(Color.FromArgb(255, 0, 0, 255));
SolidBrush semiTransBrush = new SolidBrush(Color.FromArgb(128, 0, 0, 255));

e.Graphics.FillEllipse(opaqueBrush, 35, 45, 45, 30);
e.Graphics.FillEllipse(semiTransBrush, 86, 45, 45, 30);

e.Graphics.CompositingQuality = CompositingQuality.GammaCorrected;
e.Graphics.FillEllipse(semiTransBrush, 40, 90, 86, 30);
Dim bitmap As New Bitmap("Texture1.jpg")
e.Graphics.DrawImage(bitmap, 50, 50, bitmap.Width, bitmap.Height)

Dim opaqueBrush As New SolidBrush(Color.FromArgb(255, 0, 0, 255))
Dim semiTransBrush As New SolidBrush(Color.FromArgb(128, 0, 0, 255))

e.Graphics.FillEllipse(opaqueBrush, 35, 45, 45, 30)
e.Graphics.FillEllipse(semiTransBrush, 86, 45, 45, 30)

e.Graphics.CompositingQuality = CompositingQuality.GammaCorrected
e.Graphics.FillEllipse(semiTransBrush, 40, 90, 86, 30)

다음 그림에서는 다음 코드의 출력을 보여 줍니다.

불투명 및 반투명 출력을 보여주는 그림.

코드 컴파일

앞의 예는 Windows Forms에서 사용하도록 설계되었으며 PaintEventArgs의 매개 변수인 ePaintEventHandler이(가) 필요합니다.

참고 항목