如下代码,我想用mpDC在鼠标点上画一条十字线,当我移动鼠标时,十字线会随着我的鼠标点移动,
但也许我不知道 BitBlt 的用法,所以我在绘制区域(rectRange)中看不到任何线条,
CWnd *pWnd;
CRect rect;
CDC mShowDC;
CBitmap mShowBmp;
CPen mpen;
CPen *mOldpen;
CDC *mpDC;
mpDC = GetDC();
mShowDC.CreateCompatibleDC(mpDC);
mShowBmp.CreateCompatibleBitmap(mpDC,rectRange.Width(),rectRange.Height());
mShowDC.SelectObject(mShowBmp);
BitBlt(mShowDC,0,0,rectRange.Width(),rectRange.Height(),
mbkCurveDC,0,0,SRCCOPY);
//InvalidateRect(rectRange);
if(boolShowMouseLine)
{
mpen.CreatePen(PS_SOLID,1,RGB(0,0,0));
mOldpen = mShowDC.SelectObject(&mpen);
mShowDC.MoveTo(rectRange.left,mMousePoint.y);
mShowDC.LineTo(mMousePoint.x - 1,mMousePoint.y);
mShowDC.MoveTo(mMousePoint.x + 1,mMousePoint.y);
mShowDC.LineTo(rectRange.bottom,mMousePoint.y);
mShowDC.MoveTo(mMousePoint.x,rectRange.top);
mShowDC.LineTo(mMousePoint.x,mMousePoint.y - 1);
mShowDC.MoveTo(mMousePoint.x,mMousePoint.y + 1);
mShowDC.LineTo(mMousePoint.x,rectRange.right);
mpen.DeleteObject();
mShowDC.SelectObject(mOldpen);
}
mpDC->BitBlt(rectRange.left, rectRange.top,
rectRange.Width(), rectRange.Height(),
&mShowDC, rectRange.left, rectRange.top, SRCCOPY);
我绘制交叉线的另一种方法如下代码
CDC *cdc;
cdc = GetDC();
if(boolShowMouseLine)
{
cdc->MoveTo(rectRange.left,mMousePoint.y);
cdc->LineTo(mMousePoint.x - 1,mMousePoint.y);
cdc->MoveTo(mMousePoint.x + 1,mMousePoint.y);
cdc->LineTo(rectRange.right,mMousePoint.y);
cdc->MoveTo(mMousePoint.x,rectRange.top);
cdc->LineTo(mMousePoint.x,mMousePoint.y - 1);
cdc->MoveTo(mMousePoint.x,mMousePoint.y + 1);
cdc->LineTo(mMousePoint.x,rectRange.bottom);
}
目前的情况就是图片
但是这个代码在移动鼠标位置时会画很多交叉线,
如何清除上一个交叉线...