본문 바로가기
.NET C#

Color와 Colors 구조체를 객체 생성 및 색 지정

by 태디 2008. 1. 8.
728x90
WPF에서 색상을 다루기 위해서는 System.Windows.Media 네임스페이스에 정의된 Color 구조체를 사용합니다. Color 구조체는 빛의 3원색인 빨간색, 녹색, 파란색 3가지를 사용합니다. 이 3원색은 영문의 앞자를 따서 R(Red), G(Green), B(Blue)로 나타냅니다. 또 색상의 투명도를 나타내는 알파 채널을 추가하여 ARGB라고 표현합니다. 약자는 A(Alpha)로 나타내며 값이 0이면 완전한 투명하다는 의미이며 255이면 불투명임을 나타냅니다.
 
3원색을 나타내기 위해서 다음과 같이 코드를 작성합니다. Color 구조체는 인자가 있는 객체와 없는 객체가 모두 존재합니다.

인자 값이 없는 Color 객체 생성


Color color = new Color();
 
color.R = 255;
color.G = 0;
color.B = 0;

 
Color 구조체에서 지원하는 정적 메소드를 있습니다. 이 경우 3개의 인자 값이 필요하며 데이터 타입은 Byte이며 0~255까지 입력 가능합니다.  
 

Color color = Color.FromRgb(0, 255, 255);
 

다음은 알파채널 지정할 수 있는 메소드 사용법입니다. A값 역시 0~255까지 입력 가능하며 데이터타입은 Byte형입니다.


Color color = Color.FromArgb(255, 0, 255, 255);
 

지금까지 설명한 내용은 Color 구조체에 객체를 생성하여 0~255까지의 Byte 값을 인자값으로 직접 대입하는  방법을 사용하는 경우이며 System.Windows.Media에는 Colors란 이름의 클래스도 있는데, 여기에는 알파벳순으로 지정된 읽기 전용의 141개 정적 프로퍼티가 있습니다. 사용법은 다음구문과 같습니다.


Colors color = Colors.YellowGreen;
 
 
마지막으로 가장 중요한 것은 Color 객체는 색을 지정할 경우 직접 대입할 수 없기 때문에, 가장 널리 사용되는 Brush 타입의 객체를 사용합니다.
 
일반적으로 색을 대입할 때 SolidColorBrush 클래스를 이용하여 Window의 background나 각종 Control의 색을 지정할 수 있습니다. 사용방법은 다음구문과 같습니다.
 

1)
Color color = Color.FromRgb(0, 255, 255);
SolidColorBrush brush = new SolidColorBrush(color);
Background = brush;

2)
Background = new SolidColorBrush(Color.FromRgb(0, 255, 255));

3)
SolidColorBrush brush = new SolidColorBrush();
brush.Color = Color. FromRgb(0, 255, 255);
 

다음강좌에는 Gradient를 그릴 때 사용하는 RadialGradientBrush,
LinearGradientBrush 클래스에 대해여 예제를 통해 자세히 알아보겠습니다.

참고서적 : 찰스 페졸트의 WPF

댓글