본문 바로가기

C, C++, C#/MFC

MFC StretchBlt 비트맵 확대 축소

반응형
 

안녕하세요 제가 요새는 그닥 포스팅 할 내용이 많이 없어서 포스팅을 꽤나 안했네요..


MFC StretchBlt 비트맵 확대 축소에 관한 내용을 포스팅 할까 합니다.

 

 

StretchBlt

 - 비트맵 확대, 축소 후 디스플레이 하는 API

 

~④   : 사진의 위치 및 출력되는 크기(위치 및 크기 조절)

⑤         : 내가 확대, 축소 할 비트맵 데이터의 메모리(~⑨을 이용해 크기 조절)

~⑨   : bmp 보여 주는 부분(크기조절)

※ 여기만 보시면 이해하기가 힘들수 있습니다. 아래 그림의 번호와 대조해보세요

 

매개변수 목록입니다.  

 

 

 옵션 

BLACKNESS

모든 출력을 검정색으로 변경

DSTINVERT

대상 비트맵을 반전

MERGECOPY

AND 연산자를 사용하여 원본 비트맵의 결합

MERGEPAINT

반전된 원본 비트맵과 OR 연산자를 사용하여 원본 비트맵의 결합

NOTSRCCOPY

반전된 원본 비트맵을 복사

NOTSRCERASE

OR 연산자를 사용 하 여 대상과 원본 비트맵의 결합의 결과 반전

PATCOPY

비트맵에 복사

PATINVERT

XOR 연산자를 사용하여 패턴을 원본 비트맵의 결합

PATPAINT

OR 연산자를 사용하여 반전된 원본 비트맵의 결합 + OR 연산자를 사용하여 비트맵을 결합

SRCAND

AND 연산자를 사용하여 원본 비트맵의 결합

SRCCOPY

비트맵을 대상 비트맵에 복사

SRCERASE

비트맵의 반전 및 AND 연산자를 사용하여 원본 비트맵 결합

SRCINVERT

XOR 연산자를 사용하여 대상과 원본 비트맵의 결합

SRCPAINT

OR 연산자를 사용 하 여 대상과 원본 비트맵의 픽셀을 결합

WHITENESS

모든 출력을 흰색으로 변경

- 저도 타 옵션을 많이 써보진 않고.. SRCCOPY를 가장 많이 사용합니다. 

출처 : https://www.google.co.kr/?gfe_rd=cr&ei=auVuWKrXJ8fo8Aex9bugCA#q=internet+explorer+%EB%A9%88%EC%B6%A4

 

 


 

 
























1. 위 그림은 좌측 쯔위 그림의 출력할 위치를 ~⑨을 이용해 선택 해줍니다.

(ex- ⑥ : 0, ⑦ : 0, ⑧ : bmp 넓이, ⑨ : bmp 높이)

2. ~④를 이용해 출력할 위치를 정합니다. (①, ② 를 0,0으로 하면 좌측 상단에 출력 되겠죠??)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 














이번엔 그림의 일부분 확대도 가능 합니다.(ex- ⑥ : 15, ⑦ : 15, ⑧ : 50, ⑨ : 60)

1. 마찬가지로 ~⑨의 좌표 + 넓이, 높이를 지정해줍니다.

2. ~④를 이용해 출력할 위치를 정합니다

 


 

 ※ 사용하다보니 20 ~ 30개를 축소 하는 경우를 테스트 해보니 성능이 굉장이 떨어집니다. 그래서 전 알씨를 이용해서 bmp의 크기를 아예 축소해 놓고 Bitbit을 이용했습니다. 아니면 한번 축소 후 메모리에 가지고 Bitbit을 이용한 방법도 좋겠네요

 

쉽게 이해하시면 좋겠습니다... 만약 헷갈리고 수정이 필요한 부분을 피드백 해주시면 수정하겠습니다!!

(저는 코딩하면서 해서 쉽게 이해했지만 글만 보시면 헷갈리실 수 있을거 같네요)

 

 

 

 

반응형