728x90
반응형
ARM ultra
CM쌤께서 소스를 직접 주셨다.
여기에 장치 핀 번호를 현재 우리가 사용하는 것에 맞게 수정을 해야 한다.
이러한 일을 포팅이라고 한다.ㅇ
각자 포팅을 했을것이라 생각하고 winAPI로 넘어간다....
6장 비트맵 출력하기
먼저 기본 소스를 가지고 프로젝트를 하나 만든다.
그리고 리소스 스크립트를 하나 추가 한다.(file 메뉴에서 - new 선택 후 아래 화면과 같이 선택)
추가를 했으면 Workspacedp 리소스가 추가 된것을 볼 수 있다.
그러면 이제 insert메뉴에서 Resource를 선택하고 아래 화면에 보이는 Bitmap을 선택하고 Impot시킨다.
이때 bmp 파일을 선택하고 확인을 누르면 아래와 같은 메시지창이 뜬다.
빨간 느낌표가 아니니 놀랄 필요 없다. 파일이 256색상 이상의 비트맵이라는 뜻이다. 비주얼 스튜디오의 리소스 편집기에서 편집이 안된다는 뜻이지 사용할 수 없는것은 아니다.
우리는 사용만 할 것이기에 확인후 넘어간다.
이제 기본 소스를 아래 와 같이 수정을 한다.
소스를 정확히 작성했다면 자신이 선택한 비트맵 이미지가 뜰 것이다.
(아래 사진은 내가 선택한 사진 ^^)
비트맵은 곧바로 화면 DC로 출력하지 않는다.
이유는 나름 고용량이며 따라서 출력속도가 느리기때문이다. 그래서 출력하기 전에 미리 준비를 하는데 이것이 메모리 DC이다.
메모리 DC란 화면 DC와 동일한 특성을 가지며 그 내부에 출력 표면을 가진 메모리 영역이다. 여기서 화면 DC에 사용할 수 있는 모든 출력을 메모리 DC에서도 할 수 있고, 화면 DC에서는 불가능 한 것도 가능하다.
그래서 메모리 DC에 먼저 그림을 그린 후 사용자 눈에 그려지는 과정은 보여주지 않고 그 결과만 화면으로 고속 복사 하는 더블 버퍼링 을 많이 사용한다.
비트맵은 일종의 GDI오브젝트이지만 화면 DC에는 선택할 수 없으며 메모리 DC만이 비트맵을 선택할 수 있다.
아래의 소스는 비트맵의 출력 창의 크기를 정하는 소스이다.
StretchBlt함수가 등장한다.
BitBlt 함수는 비트맵에 대해 폭과 높이만을 선택할 수 있고 비트맵 자체의 수정은 불가능하다.
하지만 StretchBlt는 크기를 축소및 확대가 가능하다.
또 GetObject 함수가 있는데 비트맵의 크기를 자동으로 조사해서 비트맵 전체를 출력한다.
BitBlt는 영역을 선택해 주지만 이 함수는 자동으로 전체를 출력해주기 때문에 편리하다.
여태 까지의 소스는 모두 OnPaint 안에서 모든 코드가 작성되어 졌다.
onPaint 가 호출되어 그리기를 할 때마다 전달되는데 이때마다 비트맵을 읽어 와서 출력하고 해제하는 것을 반복한다면 그리기 속도가 느릴것이다. 또 너무 비효율 적이다.
원칙적으로 비트맵은 create에서 미리 읽어 두고 paint에서는 출력만 해야 한다. 그러면 종료전 destroy에서 해제해야 할 것이다. 이렇게 코드를 구분하면 상당히 효율적이다. 그래서 아래와 같이 수정을 해 보았다.
728x90
'코스웨어 > 11년 내장형하드웨어' 카테고리의 다른 글
[내장형]백길남_2011년 9월 21일 수요일 보고서 (13) | 2011.09.21 |
---|---|
[내장형]박춘우_2011년 9월 20일 화요일 Daily Report (26) | 2011.09.21 |
[내장형]한원우_9월19일 보고서 (36) | 2011.09.20 |
[내장형]이동현_0916일일보고서 (23) | 2011.09.17 |
[내장형]황세선 2011년 9월 14일 (24) | 2011.09.15 |
[내장형]정선주 2011년 9월 9일 (10) | 2011.09.10 |
[내장형]심재원_2011년09월08일 (10) | 2011.09.08 |
[내장형]이수란_2011년9월7일 (9) | 2011.09.07 |