+ -
当前位置:首页 → 问答吧 → StretchBlt

StretchBlt

时间:2011-12-27

来源:互联网

void XCMagnifier::XOwnerDraw()
{
CDC *pDC = GetDC();
if (pDC && m_pMemDC)
{
CRect clientRect;
CRect windowRect;
GetClientRect(clientRect);
GetWindowRect(windowRect);

if (!m_zoom)//正常显示
{
pDC->BitBlt(
clientRect.left, clientRect.top, clientRect.Width(), clientRect.Height(),
m_pMemDC,
windowRect.left, windowRect.top, SRCCOPY
);
}
else//放大镜
{
int cx, cy, cw, ch;
cx = clientRect.left;
cy = clientRect.top;
cw = clientRect.Width();
ch = clientRect.Height();
int wx, wy, ww, wh;
wx = windowRect.left;
wy = windowRect.top;
ww = windowRect.Width();
wh = windowRect.Height();
if (wx < 0)
{
ww += wx;

cx = wx*(-1);
cw += wx;

wx *= -1;
}
if (wy < 0)
{
wh += wy;

cy = wy*(-1);
ch += wy;

wy *= -1;
}
StretchBlt(
pDC->m_hDC, cx, cy, cw, ch,
m_pMemDC->m_hDC, wx, wy, ww/2, wh/2,
SRCCOPY
);
}
//draw rect border
pDC->MoveTo(clientRect.left, clientRect.top);
pDC->LineTo(clientRect.right - 1, clientRect.top);
pDC->LineTo(clientRect.right - 1, clientRect.bottom - 1);
pDC->LineTo(clientRect.left, clientRect.bottom - 1);
pDC->LineTo(clientRect.left, clientRect.top);
}
}
  这个放大镜不能够实现放大的效果,放大镜移上去没得什么变化,是哪儿的问题?

作者: dengniit   发布时间: 2011-12-27

你取WindowRect的时候有我问题

作者: macrojj   发布时间: 2011-12-27