2009-07-09 9 views
0

DC에서 이미지를 그리기 위해 C++ GDI, StretchDIBits를 사용하고 있습니다.StretchDIBits 부분적으로 흔들릴 때 이미지가 흔들림

원본 이미지가 크기 때문에 고품질이 필요합니다. DC (이미지 확대/축소)에서 전체 이미지를 그릴 때 HAFTONE 모드를 사용합니다.

그래서 StretchDIBits를 사용하여 부분적으로 그립니다. 그러나 StretchDIBits에 심각한 문제가 있습니다.

I 정수만의 영역 정수에 RECT을 그릴 수있는 이미지 (21) * 21

::SetStretchBltMode(hdc, HALFTONE); 
    ::StretchDIBits(hdc, 
     realDrawRect.left, 
     realDrawRect.top, 
     realDrawRect.right - realDrawRect.left, 
     realDrawRect.bottom - realDrawRect.top, 
     left, 
     top, 
     width, 
     height, 
     pImageDIB, 
     pImageHead, 
     DIB_RGB_COLORS, SRCCOPY); 

경우 (폭 및 높이, 및 (X)의 좌측 상단 점, Y는 모두 정수). 저는 다음 번에 (21, 20, 61, 60)에 그릴 때 (20, 20, 60, 60) DC로 (5, 5, 7, 7) 그리기하고 있습니다. 원본 이미지에 해당 위치가 없습니다. 그래서 나는 DC에 근사 rect를 그릴 수 있습니다. 이제 문제가 발생하면 이미지가 흔들리고 있습니다!

나는 그 문제에 대해 짜증이났다. 흔들림을 방지하려면 어떻게해야합니까?

답변

0

정수를 반올림하여 떨리는 경우 가장 가까운 정수로 반올림 해보십시오. this을 참조하십시오.

그렇지 않으면 작업하기가 훨씬 쉬운 GDI +로 전환하는 것이 좋습니다. GDI +를 사용하면 부동 소수점 정밀도로 비트 맵을 그릴 수 있습니다. 설명서 Graphics::DrawImage을 참조하십시오.

몇 가지 MFC Active-X 프로젝트에서 GDI를 GDI로 전환했으며 전혀 어렵지 않습니다.

관련 문제