visual-c++ - 在 mfc 中从中心缩放位图图像

标签 visual-c++ 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 中处理它

关于visual-c++ - 在 mfc 中从中心缩放位图图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30588090/

相关文章:

c++ - 与 "LPCWSTR"类型的参数不兼容

c++ - 如何禁用 CListCtrl 选择选项

c++ - C++中互斥锁和临界区之间的性能差异

c++ - 什么会导致 Windows 发送两次 ID_HELP 命令

c++ - 更改View的客户区

c++ - 如何在#import c++ 命令中使用环境变量?

multithreading - 多个线程在 C++ 中等待同一个事件句柄

c++ - 获取进程用户名c++

c++ - CWnd::SetRedraw(False) 让鼠标穿过窗口

c++ - 内联函数和 __thiscall __cdecl Bjarne String 示例