오늘, 내 인생의 가장 젊은 날

[MFC] SetStretchBltMode : StretchBlt을 좀 더 부드럽게 본문

프로그래밍/MFC

[MFC] SetStretchBltMode : StretchBlt을 좀 더 부드럽게

엔아르케 2018. 7. 26. 00:40

DC에 이미지를 표시할 때, 그중에서 확대나 축소가 필요한 경우 StretchBlt()을 사용하는데,

DC 생성후 기본 값을 사용할 경우 그 품질은... (왠지 요즘은 마인크래프트 풍으로 보여서 나름 괜찮으...ㅋㅋㅋ)


이럴 때, 필요한 것이 바로 SetStretchBltMode() 이다.

자세한 사항은 MS Document 사이트를 참고하시고, 여기서는 요점만 정리해 둔다.



함수 원형

int SetStretchBltMode(
    HDC hdc,
    int mode
);



hdc는 당연히 DC Handle이고,


mode는 요렇게 선언되어 있다.

/* StretchBlt() Modes */
#define BLACKONWHITE                 1
#define WHITEONBLACK                 2
#define COLORONCOLOR                 3
#define HALFTONE                     4
#define MAXSTRETCHBLTMODE            4


테스트 해보니 HALFTONE 모드가 젤 낫다.



아래처럼 사용 하면 된다.


{ CPaintDC dc(this); ...

::SetStretchBltMode(dc.m_hDC, HALFTONE); ::StretchBlt(dc.m_hDC, 0, 0, nDstWidth, nDstHeight,

m_hMemDC, 0, 0, nSrcWidth, nSrcHeight, SRCCOPY);

... }



그리고,  당연한 얘기겠지만...

이렇게 모드를 변경하면 CPU 부하율도 증가한다.



Comments