在 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
中处理它
我是 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
中处理它