[C#] 동적 Bitmap 생성

.NET에서 C# 코드로 비트맵을 생성하고 생성한 이 비트맵에 원하는 그래픽 요소를 그린 후 스트림에 전송하는 방법에 대한 정리입니다. 매우 간단한 내용이지만 그래픽에 대해 관심이 많은 개발자로써 천천히 정리해 봤습니다.

int w = 100;
int h = 100;

Image img = new Bitmap(w, h);
Graphics grp = Graphics.FromImage(img);

위의 코드는 100×100 크기의 비트맵 이미지를 생성하고 이 이미지에 그래픽 요소를 그리기 위한 Graphics 클래스의 인스턴스와 바인딩 합니다. 이제 Graphics 클래스의 인스턴스 변수인 grp를 이용해 우리가 원하는 그래픽 요소를 그릴 수 있습니다. 아래는 간단하게 선을 그리고 파일로 저장하는 코드입니다.

grp.DrawLine(Pens.Aqua, 10, 10, 90, 90);
img.Save("d:/a.bmp");

저장된 파일은 아래와 같습니다.

그림을 살펴보면.. 그래픽 객체로 직접 선을 그린 픽셀을 제외하고 나머지 픽셀들은 모두 투명이라는 것을 알 수 있습니다. 그리고 아래의 코드는 비트맵 이미지를 구성하는 픽셀 하나 하나에 대한 색상 정보를 가져올 수 있는 힌트를 제공하는 코드입니다.

Bitmap bmp = img as Bitmap;
Color clr = bmp.GetPixel(10, 10);
MessageBox.Show(clr.ToString());

MessageBox를 통해 Color타입의 clr을 toString 매서드를 통해 얻은 값은 아래 그림과 같습니다. 자바와 같이 C# 역시 모든 객체에 대해 toString() 매서드를 제공하여 자신에 대한 정보를 사용자가 읽어 파악할 수 있는 문자열 형태의 값을 제공하고 있습니다.

사용자 삽입 이미지
끝으로 픽셀값을 Color 타입으로 가져오고 있습니다. Color는 퍼포먼스를 위해서 클래스가 이난 구조체 타입으로 선언되어 있습니다.

말하는 시계… 요게 몇년도에 맹근거냠… -_-;

잠시 인터넷 탐색을 하던 중에.. 개인적으로 경악스러운 프로그램을 발견했습니다. “말하는 시계”..! 델파이.. 라는 언어를 한창 공부하고 공부차원에서 자잘한 프로그램 만들던 대학생때.. 그때가 97년인가.. 98년인가.. 아마 98년인듯합니다.

네.. 제가 그때 만든 프로그램이 2010년까지 살아서 사용되고 있다는 것을 알았습니다. 혹시나 해서 말하는 시계로 검색해보니… 몇몇 블로그에서 소개를 해주시고 있네요.. 이런 감사할 일이…. 보답을 어찌 해드려야 할지.. ㅠ_ㅠ 근데 참으로… 신기합니당.. 감회도 새롭구….

또 이런 일도 있었습니다.. 제가 델파이로 만든 퍼즐 게임.. 비루스(ViRus)라는 프로그램이 있었는데.. 그 당시 천리안에 소스까지 올렸더랬는데.. 언제 보니 델파이 책에 그 프로그램 소스가 실렸더군요.. 델파이 학습용 샘플 프로그램으로써 말입니당.. 델파이에 대한 추억이 생각나네요… 참 좋아라 했던 개발툴이였는데…………

사용자 삽입 이미지

여하튼~ 이거 제가 만들었시유~~ ^^* 라고 자랑질을 해봅니당.. 제작자에 관하여를 보니.. 제 닉네임이.. jackass였군요. 당나귀.. 바보.. 촌놈이라는… 세상 순수하게 살겠다는 의지를 불태우던 시절이였죠.. 한국 토목의 세계 전산화 일류를 꿈 꿨던…….! 내가 이런 꿈도 꿨나?? ^^; 암튼 멋진 놈이였군요.. ㅎㅎ

어제 오전 11시에 출근해서 오늘.. 그러니까 지금 시간(아침 6시 10분)까지 사무실에서 작업를 했습니다. 정말 모처럼이군요.. 가능한 철야나 야근을 하지 않는다는 주의로써… 이런 작업 방식도.. 나쁘지 않다라는 불길한 생각이 듭니다. 이제 퇴근해야겠습니다……..