在 mfc 中从中心缩放位图图像

Zoom Bitmap Image from center in mfc

我是 MFC 新手。如何从中心缩放位图图像。在我的代码中,图像从左上角开始缩放。但是图像应该从滚动条的中心开始缩放..

void CRightUp::ImageDraw(int sHeight,int sWidth){
    CDC *screenDC = GetDC();
    CDC mDC;
    mDC.CreateCompatibleDC(screenDC);
    CBitmap bitmap;
    bitmap.CreateCompatibleBitmap(screenDC, sWidth, sHeight);
    CBitmap *pob = mDC.SelectObject(&bitmap);
    mDC.SetStretchBltMode(HALFTONE);
    m_img.StretchBlt(mDC.m_hDC, 0, 0, sWidth, sHeight, 0, 0,   m_img.GetWidth(), m_img.GetHeight(), SRCCOPY);
    mDC.SelectObject(pob);
    m_logoImage.SetBitmap((HBITMAP)bitmap.Detach());
    ReleaseDC(screenDC);}

为什么要麻烦 m_logoImage:

void CRightUp::ImageDraw(int sHeight,int sWidth){
    RECT r;
    GetClientRect(&r);
    CDC *screenDC = GetDC();
    m_img.StretchBlt(screenDC->m_hDC, ((r.right-r.left)-sWidth)/2, 
         ((r.bottom-r.top)-sHeight)/2, 
         sWidth, sHeight, 0, 0,  
         m_img.GetWidth(), m_img.GetHeight(), SRCCOPY);
    ReleaseDC(screenDC);
}

暂时只画这个。如果您快速调用 ImageDraw(例如,每 1/10 秒或更多),在它完全缩放之前它应该没问题。那时,您可以在 CStatic 或 OnPaint 或 OnEraseBackground

中处理它