SetDIBitsToDeviceの書き方について

[戻る]
Tonny 2005/05/17(火) 13:11:17
こんにちは。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が
マイナスになる事もあり、それがいけないことかどうかわかりません。
このままでいいのでしょうか。普通どのような書き方をするのでしょうか。

Tonny 2005/05/20(金) 20:29:59
要はSetDIBitsToDeviceの第6、7引数の

XSrc DIB の左下隅の x 座標を論理単位で指定します。 
YSrc DIB の左下隅の y 座標を論理単位で指定します。

の値がマイナスでも問題ないかどうか知りたいのです。

私の環境(win2000 VC++6.0)では問題なく動いているようなのですが。

古いスレッドには追加発言できません。