달력

12

« 2018/12 »

  •  
  •  
  •  
  •  
  •  
  •  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  
  •  
  •  
  •  
  •  

'BitBlt'에 해당되는 글 4

  1. 2010.05.17 MFC-CImage 클래스
  2. 2010.05.16 MFC-비트맵 띄우기
  3. 2010.05.10 API-애니메이션
  4. 2010.04.24 API-BitMap
2010.05.17 01:41

MFC-CImage 클래스 프로그래밍/MFC2010.05.17 01:41






기존의 이미지를 출력하는 방식이 아닌
MFC에서 추가된 CImage를 사용해 보자.


소스 코드 자체가 딱히 어려운 부분은 없다. 마지막에 흑백으로 출력 하는 부분이 있는데,
RGBtoGray라는 부분은 inline으로 선언되 있다.

흑백으로 변경하는 알고리즘은 거의 공식화 되어 있다고 하니 그냥 단순하게 기억해 두자.
CImage에서는 bmp뿐만 아니라 jpg, gif, png등이 있다고 한다.

CImage를 사용하기 위해서는 반드시
#include <atlimage.h> 를 해 주어야 한다.

// 실행 화면

단점은, 이미지에 대해서 모든 픽셀을 변경해서 다시 픽셀을 설정해 주기 때문에, 예제 처럼 WM_PAINT에서 매번 처리하기에는 비효율 적이다.
WM_CREATE나 또는 한번만 불러오게 변경하여, 추가 이미지를 생성하여 그 안에 변경후 저장해 두는 것이 훨씬 나은 구현 방법일 것이다.

'프로그래밍 > MFC' 카테고리의 다른 글

MFC-TextRgn( 게이지에 따른 텍스트 변화 )  (0) 2010.05.19
MFC-CImage( 스크린 샷 찍기 )  (0) 2010.05.17
MFC-CImage 클래스  (0) 2010.05.17
MFC-비트맵 띄우기  (0) 2010.05.16
MFC-가상 버튼 만들기  (0) 2010.05.16
MFC-부채꼴 그리기  (0) 2010.05.16
Posted by 안식의후크
2010.05.16 21:39

MFC-비트맵 띄우기 프로그래밍/MFC2010.05.16 21:39







MFC의 비트맵도 API와 매우 흡사하다.

일단 비트맵 리소스를 하나 추가하자.

다음과 같은 비트맵이 있다고 하였을 때,

이제 이 비트맵을 가지고 띄우는 일과, 투명값, 알파값, 사이즈 조정등을 하나하나 해보도록 하자.

기본적으로 리소스에 존재하는 이미지를 띄우는 개념에 대해서는 구지 설명하지 않고,

소스 위주로 보도록 하자.

먼저 프로젝트에 WM_PAINT 메시지를 하나 만들자.


기본 적인 설명은 주석을 달아 놓았다.
큰 구조 자체는 변화가 없다. MemDC를 생성하고 그 안에 Bitmap을 넣은 후 DC에 MemDC를 복사 하는 방법이다.
BitBlt의 인자는 출력할 윈도우 좌표 x,y
비트맵의 폭과 높이.
출력할 비트맵을 저장한 메모리 DC의 주소
메모리 DC에 들어 있는 비트맵의 시작 좌표
적용할 래스터 연산 이다.

// 실행 화면


두번째로 기본의 이미지를 상태로 크기를 조정하는 예제를 살펴 보자.

다른 부분은 전혀 바뀐게 없다. 단지,

BitBlt의 부분을

로만 변경해 주어도 이미지의 크기가 좌우 2배씩 늘어 난 것을 알 수 있다.

각각의 인자는 BitBlt과 비슷 하지만, 3,4번째 인자로 이미지 확대를 가능케 하고,
8,9번째 인자에 원본 이미지의 폭과 높이를 추가로 지정하는것이 차이점이다.
// 실행 화면


다음으로 이미지에 특정 RGB값에 대해서 투명하게 처리하는 함수를 살펴 보자.

이전 함수와 차이라고는 마지막 변수에 RGB값을 컬러키로 지정해서 그 부분만 투명하게 한다는 것!
// 실행 화면

마지막으로 알파블랜딩에 대해서 알아 보자.

기존과는 조금 차이가 있는데, 마지막에 들어 가는 인자가 BLENDFUNCTION이라는 구조체에 대한 정보를 삽입하게 된다.


// 실행 화면

'프로그래밍 > MFC' 카테고리의 다른 글

MFC-CImage( 스크린 샷 찍기 )  (0) 2010.05.17
MFC-CImage 클래스  (0) 2010.05.17
MFC-비트맵 띄우기  (0) 2010.05.16
MFC-가상 버튼 만들기  (0) 2010.05.16
MFC-부채꼴 그리기  (0) 2010.05.16
MFC-도형 그리기  (0) 2010.05.16
Posted by 안식의후크
2010.05.10 21:04

API-애니메이션 프로그래밍/API2010.05.10 21:04






애니메이션의 기본은 여러장, 또는 한장이지만 부분별로 쪼개어 번갈아 가면서 계속 보여줌으로써 애니메이션을 연출 할 수 있다.

긴 설명이 필요 할거 같지는 않고,

다음의 이미지를 번갈아서 출력한다고 생각해 보자.


이미지의 크기는 x축 48*12, y출 48이다.

따로 애니메이션을 플레이 해주는 함수가 존재하는 것은 아니고,

BitBlt 함수를 사용해 간단하게 화면에 뿌려 줄 수 있다.

예제를 보면 쉽게 이해 할 수 있다.

예제에서 보면

타이머를 사용해 frame를 수치를 조정하면서, 이미지를 48*fream, 0 으로 보여주는 것을 확인 할 수 있다.

즉 이미지 전체를 띄우는 것이 아니라.

이미지의 부분 부분을 잘라내어 특정 시간을 두고 조금씩 그 위치를 변경하는 것이다.

// 실행 화면
1부터 12까지 꾸준하게 번갈아 가면서 출력된다.

'프로그래밍 > API' 카테고리의 다른 글

API-ini파일  (1) 2010.05.10
API-알파값(비트맵 이미지 투명화)  (0) 2010.05.10
API-애니메이션  (0) 2010.05.10
API-PlaySound  (0) 2010.05.10
API-더블 버퍼링  (0) 2010.05.10
API-ChildWnd  (0) 2010.04.24
Posted by 안식의후크
2010.04.24 11:31

API-BitMap 프로그래밍/API2010.04.24 11:31





비트맵을 사용하기 위한 예제,


못보던 것들이 많지만,
비트맵을 화면에 뿌려주기 위해서는,
바로 뿌리는것이 아니라,
메모리DC를 만들고 그 안에 비트맵을 그려둔 후에, 화면 DC로 복사하여
화면에 그림이 나타나게 해야 한다. 이것만 파악 했다면 그렇게 어려운 예제는 아닌듯,
설명이 필요한 부분이

이 부분이라고 생각하는데,
hdc(화면 DC)에 0, 0 의 좌표에 48, 48 크기 만큼, MemDC에 존재하는 0, 0부터 SRCCOPY 스타일로 가져 온다, 라고 생각하면 된다.
또 다른 설정값들
 값  설명
 BLACKNESS  대상영역을 검정색으로 가득 채운다 
 DSTINVERT  화면을 반전 시킨다.
 MERGECOPY  소스 비트맵과 대상 화면을 AND 연산한다.
 MERGEPAINT  소스 비트맵과 대상 화면을 OR 연산한다.
 SRCCOPY  소스 영역을 대상 영역에 복사한다.
 WHITENESS  대상영역을 흰색으로 채운다.

// 실행 화면
비트맵 이미지에 너무 마음두지 말자.

'프로그래밍 > API' 카테고리의 다른 글

API-Control(2)  (0) 2010.04.24
API-Control(1)  (0) 2010.04.24
API-BitMap  (0) 2010.04.24
API-RopMode  (0) 2010.04.24
API-GdiObject  (0) 2010.04.22
API-resource(3)  (0) 2010.04.21
Posted by 안식의후크