[C# 강좌 38장] WIndow Form - 5 Graphic

공부/C#  2012.10.17 14:28



 

안녕하세요. 개발자 명월입니다.

이번 포스팅에서는 Graphics 에 대해서 알아보도록하겠습니다.

Graphics 란 무엇인가 하면 해당 윈도우에 그림을 그리기 위한 디스플레이 장치(?) 입니다. C언어에서는 DC(Device Context) 라고 불리던 녀석입니다. 사용방법은 해당 핸들의 CreateGraphics메소드로 가져와 사용하면 됩니다.

 

먼저 MSDN 을 살펴 보도록 하겠습니다.

MSDN바로가기 - Graphics 클래스

 

 

MSDN 을 자세하 살펴보면 Draw 로 시작되는 접두어가 있고 Fill 로 시작하는 접두어로 시작하는 것으로 나뉘는데 Draw는 말그대로 그리는 것이고 Fill은 도형의 내부를 색칠하는 차이라고 볼 수 있겠습니다.

 

 

 

그럼 설명 보다는 예제로 살펴보도록 하겠습니다.

 

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Text;
  4 using System.Drawing;
  5 using System.Windows.Forms;
  6
  7 namespace blog20121017
  8 {
  9     class Program : Form
10     {
11         static void Main(string[] args)
12         {
13             new Program().Show();
14             Application.Run();
15         }
16         Graphics g;
17         public Program() {
18            
19             this.FormClosed += new FormClosedEventHandler(Program_FormClosed);
20             this.Paint += new PaintEventHandler(Program_Paint);
21         }
22         public void Program_Paint(object sender, PaintEventArgs e)
23         {
24             g = this.CreateGraphics();
25             Font _font = new System.Drawing.Font(new FontFamily("돋움"), 10, FontStyle.Bold);
26             g.DrawString("test", _font, Brushes.Black, new PointF(0, 0));
27            
28             g.DrawRectangle(new Pen(Brushes.Black), new Rectangle(15, 15, 100, 100));
29             g.FillRectangle(Brushes.White, new Rectangle(125, 15, 100, 100));
30         }
31
32         public void Program_FormClosed(object sender, FormClosedEventArgs e)
33         {
34             Application.Exit();
35         }
36     }
37 }
38

 

 

결과 화면 입니다.

 


DC를 자유자제로 사용하게 되면 윈도우 상에 자유자재로 그림도 그리고 게임도 만들 수 있습니다.

그러기 위해서는 DC 연습을 정말 많이 해보아야 합니다.

좌표계에 대한 인지도 확실히 하고 메시지를 타면서 그래픽이 깨지는 현상은 없는지 확인해야 할 사항이 많이 있습니다.

 

관련 설명을 링크 해 놓도록 하겠습니다.

관련 링크 - [C#] GDI Buffer

                [C#] GDI 좌표계

 

제 개발자 노트를 보면 퍼즐게임등 DC를 이용한 프로그램을 소개 해 놓았으니 살펴 보시면 도움이 됩니다.


댓글 0개가 달렸습니다.
댓글쓰기