こんにちは。SetDIBitsToDeviceの書き方について質問があります。
BOOL CmyImage::Draw(HDC hDC, RECT* toRect,POINT* offset)
{
if (m_hDIB == NULL || toRect == 0 )
return FALSE;
if(offset != 0 )
return ::SetDIBitsToDevice(hDC,toRect->left,toRect->top,
RECTWIDTH(toRect), RECTHEIGHT(toRect),
offset->x,
m_height - toRect->top - RECTHEIGHT(toRect) - offset-
>y,//YSrc
0,m_height,
m_pBits, m_pInfo, DIB_RGB_COLORS);
else
{
int lo = m_height - RECTHEIGHT(toRect) ;
return ::SetDIBitsToDevice(hDC,toRect->left,toRect->top,
RECTWIDTH(toRect), RECTHEIGHT(toRect),
0,lo, // XSrc,YSrc
0,m_height,
m_pBits, m_pInfo, DIB_RGB_COLORS);
}
}
上のような関数を作り、一応思った通りの動作をしているのですが、YSrcが
マイナスになる事もあり、それがいけないことかどうかわかりません。
このままでいいのでしょうか。普通どのような書き方をするのでしょうか。
要はSetDIBitsToDeviceの第6、7引数の
XSrc DIB の左下隅の x 座標を論理単位で指定します。
YSrc DIB の左下隅の y 座標を論理単位で指定します。
の値がマイナスでも問題ないかどうか知りたいのです。
私の環境(win2000 VC++6.0)では問題なく動いているようなのですが。