달력

3

« 2024/3 »

  • 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

StretchBlt()를 이용할 때 기본으로 사용하면서 축소하면 엄청난 깨짐 현상이 보인다

사용자 삽입 이미지

이러한 현상을 방지하기 위해
SetStretchBltMode(hdc, iMode)로 iMode를 정의해 줘야 한다
(출처 : 데브피아 - 안영석 님)

찾아보니 StretchBlt() API를 사용할 때 SetStretchBltMode(hdc, iMode); 로 mode를 정해줄 수 있네요..
iMode 값은 다음 중 한개가 될 수 있구요.
* BLACKONWHITE : 논리 AND연산 수행/흰색배경에 검정색으로 되어있는 흑백 비트맵에 적당.
* WHITEONBLACK : 논리 OR연산 수행/흰색 배경에 검정색으로 되어있는 흑백 비트맵에 적당.
* COLORONCOLOR : 논리연산 하지 않음/컬러 비트맵에서 가장 좋은 접근 방법이라네요.^^
* HALFTONE : 반색조 형태.
저는 사진을 띄울거라서 coloroncolor을 사용했더니 바로 잘 나오네요.ㅎㅎ
ex)
pDC->SetStretchBltMode(COLORONCOLOR);  // set iMode.
pDC->StretchBlt(nX, nY, button.width, button.height, &tempDC, 0,0, BMPWIDTH, BMPHEIGHT, SRCCOPY);  // Draw


<원본사진>

사용자 삽입 이미지

<기본 설정 - 정의를 하지 않은 경우 or BLACKONWHITE 를 줬을경우>
사용자 삽입 이미지

<설정 - WHITEONBLACK를 적용>
사용자 삽입 이미지

<설정 - COLORONCOLOR>
사용자 삽입 이미지

<설정 - HALFTOME 적용>
사용자 삽입 이미지



:
Posted by Lunaness