MVC-5300 에서 영상을 받아 SCreenHVDlg 창에 뿌려주는 과정에서 나온 함수이다.
SCReenHVDlg.cpp 파일을 보게되면 DisplayImage 함수와 DisplayImage2 함수를 만나게 된다.
DisplayImage 의 경우 받은 해상도 그대로 화면에 출력해주는 것이고 DisplayImage2의 함수의 경우 이미지의 크기를 윈도우창의 크기에 맞춰 출력해주는 기능을 하는 것으로 예상된다.
현재 내가 원하는 동작은 카메라에서 받아오는 해상도와 상관없이 일정한 크기의 이미지를 내가 원하는 곳에 뿌려주는 것이다.
그리고 특정 구간의 이미지를 선택하여 출력하는데 여기에서도 이미지는 원본을 가져와 처리하되 출력의 경우
위에서와 같이 특정한 가로사이즈를 가지는 이미지를 출력해주게 된다.
그렇게 하기 위해서는 함수에서 이미지를 처리하는 부분을 수정을 해야 하는데 그곳이 바로 SetDIBitsToDevice 와 StretchDIBits 이다.
밑의 자료링크에서 좀더 자세하게 확인할 수 있겠지만 결론부터 말한다면 SetDIBitsToDevice 의 경우 이미지를 그대로 출력해 주는 역할을 한다 다만 출력을 할때 출력하고자 하는 부분을 선택해서 출력할 수 있다.
StretchDIBits 에서는 이미지를 선태하여 원하는 사이즈로 출력할 수 있는 함수이다.
추가로 MVC5300 에서는 StretchBlt를 이용한다. 코드는 아래와 같다.
int SetDIBitsToDevice(
HDC hdc, // handle to device context
int XDest, // x-coordinate of upper-left corner of
// dest. rect.
int YDest, // y-coordinate of upper-left corner of
// dest. rect.
DWORD dwWidth, // source rectangle width
DWORD dwHeight, // source rectangle height
int XSrc, // x-coordinate of lower-left corner of
// source rect.
int YSrc, // y-coordinate of lower-left corner of
// source rect.
UINT uStartScan, // first scan line in array
UINT cScanLines, // number of scan lines
CONST VOID *lpvBits, // address of array with DIB bits
CONST BITMAPINFO *lpbmi, // address of structure with bitmap info.
UINT fuColorUse // RGB or palette indexes
);
int StretchDIBits(
HDC hdc, // handle to device context
int XDest, // x-coordinate of upper-left corner of dest. rectangle
int YDest, // y-coordinate of upper-left corner of dest. rectangle
int nDestWidth, // width of destination rectangle
int nDestHeight, // height of destination rectangle
int XSrc, // x-coordinate of upper-left corner of source rectangle
int YSrc, // y-coordinate of upper-left corner of source rectangle
int nSrcWidth, // width of source rectangle
int nSrcHeight, // height of source rectangle
CONST VOID *lpBits, // address of bitmap bits
CONST BITMAPINFO *lpBitsInfo, // address of bitmap data
UINT iUsage, // usage flags
DWORD dwRop // raster operation code
);
[출처] [dib] dib 출력하기|작성자 늘푸른숲
휴..어쩌다 영상처리에 MFC 까지 하게되었는지... 나의 졸작은 어디로~~ㅠㅠ
http://blog.naver.com/xenardy/60104756608 DBI 구조와 함수에 대한 설명이 잘 나와있음
http://psj3212.blog.me/20160936152 BMP 파일의 이해 (함수이용방법 설명)
http://blog.naver.com/power2845/50141091114 MSDN의 SetDIBitstoDevice()번역
http://blog.naver.com/power2845/50148715622 setstretchBltMode 에 대하여 예제