안녕하세요 제가 요새는 그닥 포스팅 할 내용이 많이 없어서 포스팅을 꽤나 안했네요..
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을 이용한 방법도 좋겠네요 |
쉽게 이해하시면 좋겠습니다... 만약 헷갈리고 수정이 필요한 부분을 피드백 해주시면 수정하겠습니다!!
(저는 코딩하면서 해서 쉽게 이해했지만 글만 보시면 헷갈리실 수 있을거 같네요)
'C, C++, C# > MFC' 카테고리의 다른 글
MFC Log 클래스 (0) | 2020.01.14 |
---|---|
[MFC] 프로그램 실행시 바로 Dialog 숨기기 SHOW_HIDE (2) | 2017.03.22 |
[프로그램] 소수점 랜덤 프로그램 (0) | 2016.11.28 |
mfc 다이얼로그 크기 변경 위치 이동 (0) | 2016.11.17 |
MFC 트리컨트롤 선택 (0) | 2016.11.08 |