[C# 고급] GDI+ 개요 및 특징
- Language/C#
- 2008. 11. 13.
ㅁ GDI+의 개요
- GDI+(Graphical Device Interface)는 그래픽 프로그래밍을 위한 닷넷 프레임워크 객체 지향적 클래스 라이브러리 이다.
- GDI+ 는 서로 함께 작동하도록 고안된 여러 클래스들로 구성되어 있다.
- Visual Studio .NET에서는 두개의 GDI+ 라이브러리가 존재한다.
하나, .NET GDI+ 라이브러리로 닷넷 프레임워크의 일부로 제공되는 네임스페이스들과 클래스들의
집합이다.
둘 , MFC(Microsoft Foundation Class)에는 GDI를 캡슐화하는 여러 C++ 클래스들이 포함되어있
는데 그것들의 이름도 GDI+ 이다.
ㅁ GDI의 주요 특징
- 창, 비트맵, 프린터라는 세 종류의 그리기 표면(Drawing Surface)들을 제공한다.
- 임의의 그리기 표면에 2차원적 "선화(Line_Drawing)"를 그릴 수 있게 하는 도구들을 제공한다. GDI+에서는 다양한 브러시와 펜을 사용해서 여러 종류의 선, 도형, 다각형, 곡선을 그릴 수 있으며, 여러 가지 종류의 변환 기능들이 제공되므로 정교한 효과들을 손쉽게 구현할 수 있다.
- 다양한 텍스트 그리기 기능을 제공한다. (기하학적 변형, 안티앨리어싱, 팔레트 혼합)
- 이미지 및 비트맵을 지원한다. 이미지를 읽어서 임의의 그리기 표면에 그리는 것이 가능하며, 이미지를 생성하고 그 안에 다른 그림을 그리는 것도 가능하다.
- 인쇄를 지원한다. 개발자는 특별한 노력 없이도 인쇄 미리보기 기능을 손쉽게 구현할 수 있다.
- 닷넷 프레임워크에 완전히 통합되어 있다. 이는 어떠한 종류의 닷넷 응용 프로그램과도 호환될수 있도록 설계될어 있다는 것이다.
ㅁ GDI+ 네임스페이스
Namespace |
설명 |
System.Drawing | 이것은 막강한 능력을 지닌 Graphics 타입 뿐 아니라 다양한 기본 렌더링 형식을 정의한 GDI+ 핵심 네임스페이스이다.(그리기 표면, 이미지, 브러시, 펜, 폰트 등) |
System.Drawing.Drawing2D | 좀더 진보된 2차원 그래픽 기능에 사용되는 타입을 제공한다.(고급 래스터 및 벡터 그래픽 기능을 제공하여 gradient 브러시 기법과 기하학적 변형 작업이 가능함) |
System.Drawing.Imaging | 그래픽 이미지를 직접 다루는 타입을 제공한다.(팔레트 바꾸기, 이미지 메타 데이터 뽑아내기,메타 파일 다루기 등) |
System.Drawing.Printing | 출력된 페이지에 대한 이미지를 만들어 내고 프린터 자체와 상호 작용하거나 또는 주어진 출력 작업의 외형의 틀을 잡게 해주는 타입을 제공한다. |
System.Drawing.Text | 폰트 모음을 다르게 해준다. 예를 들어 FontCollection 타입은 동적으로 목표 컴퓨터에 설치된 폰트의 잡합을 찾게 해 준다. |
System.Drawing.Design | 사용자 지정 컨트롤의 디자인 시점 지원을 개선하기 위한 기능을 제공한다. Visual Studio .NET의 디자인 창 안에서 사용자 지정 컨트롤의 행동을 커스텀화하는데 쓰이는 커스텀 UITypeEditor클래스 개발을 위한 클래스들 포함되어 있다. |
위 표는 6개의 GDI+ 주요 네임스페이스 이다. 이중에서도 GDI+ 어플리케이션 프로그래밍을 작성할
때 많이 사용되는 타입들은 System.Drawing 네임스페이스 내에 정의 되어 있다.
(System.Drawing : 이미지, 브러시, 펜, 폰트를 표현하는 클래스 뿐만 아니라 Color,Point 그리고
Rectangle과 같은 많은 연관된 타입들이 정의되어 있다.)
ㅁ System.Drawing 네임스페이즈의 주요 클래스 목록
Class 설명
Bitmap
픽셀 데이터로 정의된 이미지를 사용하여 작업하는 데 사용된 개체, 그래픽 이미지의 픽셀 데이터와특성으로 구성되는 GDI+ 비트맵을 캡슐화
Brush
사각형, 타원, 파이, 다각형 및 경로와 같은 그래픽 도형의 내부를 채우는데 사용된 개체
Brushes
모든 표준 색에 사용되는 브러시
BufferedGraphics
더블 버퍼링을 위한 그래픽 버퍼 지원
BufferedGraphicsContext
더블 버퍼링을 사용할 수 있도록 그래픽 버퍼들의 생성 메소드들을 지원
BufferedGraphicsManager
어플리케이션 도메인에 대한 그래픽스 컨텍스트 객체의 메인 버퍼 접근을 지원한다.
ColorConverter
한 데이터 형식에서 다른 데이터 형식으로 색상을 변환
ColorTranslator
색을 GDI+ Color 구조체로 변환하거나 구조체에서 변환
Font
글꼴, 크기, 스타일 특성을 포함하여 텍스트의 특정 형식을 정의
FontConverter
한 데이터 형식에서 다른 데이터 형식으로 Font개체를 변환
FontFamily
비슷한 기본 디자인 및 스타일의 특정 변형이 있는 형식의 그룹을 정의
Graphics
GDI+ 그리기 화면을 캡슐화
Icon
Windows 아이콘을 나타내는데 사용
IconConverter
개체를 한 데이터 형식에서 다른 것으로 변환
Image
Bitmap, Icon 및 Metafile 하위 클래스에 기능을 제공하는 기본 클래스
ImageAnimator
시간 기반 프레임을 가진 이미지에 애니메이션 효과를 줌
ImageConverter
하나의 데이터 형식에서 다른 데이터 형식으로 Image 개체를 변환
ImageFormatConvertor
하나의 데이터 형식에서 다른 데이터 형식으로 색상을 변환
Pen
선과 곡선을 그리는데 사용되는 개체의 정의
Pens | 모든 표준 색에 사용되는 펜 |
PointConverter | 하나의 데이터 형식에서 다른 데이터 형식으로 Point 개체를 반환 |
RectangleConverter | 한 데이터 형식에서 다른 데이터 형식으로 사각형을 반환 |
Region | 사각형과 경로로 구성된 그래픽 모양의 내부를 설명 |
SizeConverter | 하나의 데이터 형식에서 다른 데이터 형식으로 변환하는데 사용 |
SolidBrush | 단일 색의 브러시를 정의 |
StringFormat | 맞춤 및 줄 간격과 같은 텍스트 레이아웃 정보를 캡슐화하고, 줄임표(...) 삽입과 국가별 숫자 대체와 같은 조작 및 OpenType 기능을 표시 |
SystemBrushes | 각 속성은 Windows 표시 요소의 색인 SolidBrush 개체 |
SystemColors | 각 속성은 Windows 표시 요소의 색인 Color 구조체 |
SystemIcons | 각 속성은 Windows 시스템 아이콘의 Icon 개체 |
SystemPens | 각 속성은 Windows 표시 요소의 색이며 너비가 1인 Pen 개체 |
TextureBrush | 각 속성은 이미지를 사용하여 도형 내부를 채우는 Brush 개체 |
ToolboxBitmapAttribute | 지정된 구성 요소와 관련된 이미지를 정의 |
Graphics객체는 Windows 폼에 위해 생성할 수 있으며, 이미지 클래스에서 파생된 객체를 통해서도 생성 할 수 있다. Graphics 객체와 함께 사용될 주요 객체는 Pen Class, Brush Class, Font Class, Color Struct 등이 있다.
★ 안티앨리어싱 ★----------------------------------------------------------------------
앨리어싱으로 인해 거칠어진 이미지나 사운드를 다듬어 주는 기법이다. 앨리어싱은 가장자리가 톱
니 모양처럼 들쭉날쭉하게 되는 계단 효과가 나타나는 것을 말하는데, 이러한 것들을 없애기 위한 것
이 바로 안티앨리어싱 기법이다. 이미지에서 앨리어싱을 제거하기 위한 방법으로는 보통 픽셀의 위치
나 명암을 조정하여 설정하는 방법이 있는 데, 이렇게 하면 선의 색상과 배경의 색상 사이에 좀 더 점
진적인 변화가 생기도록 조종하므로 애리어싱을 제거할 수 있다.
----------------------------------------------------------------------------------------
[출처] [C# 고급] GDI+ 개요 및 특징|작성자 똥우기
'Language > C#' 카테고리의 다른 글
[C#] int to string , string to int (0) | 2009.02.04 |
---|---|
[c#] convert a string to a byte array and vica-versa in VB.NET and C# (0) | 2009.01.31 |