我做一个像画板的程序,可是画线,在旋转线,或移动移动的时候总是在旁边出现好多没有被清除的小点,我的代码在线旋转的时候已经把以前的线重画一边了,为什么还有多余的点出现呢????帮帮忙
enum {ppoint,line,bline,pline,circle,rectangle,muli,text,pic} DStatus;
View 的左键代码
void CEastDrawView::OnLButtonDown(UINT nFlags, CPoint point)
{ dCount=dCount+1;
CClientDC dc(this);
if (DStatus==line)
{ if (dCount==2)
{dCount=0;
DlPoint=false;
}
else if (dCount==1)
{ s_Point=point;
DlPoint=true;
}
else
{DlPoint=false;
}
}
CScrollView::OnLButtonDown(nFlags, point);
}
//////////////////////////////////////////////////////////////
鼠标移动的代码
void CEastDrawView::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CPoint myPoint;
CClientDC dc(this);
this->OnPrepareDC(&dc);
if (dCount==1)
{
if (DStatus==line)
{
DrawLine(&dc,s_Point,point);
if (DlPoint==false)
DrawLine(&dc,s_Point,fpoint);
}
fpoint=point;
DlPoint=false;
}
CScrollView::OnMouseMove(nFlags, point);
//////////////////////////////////////////////////////////////////
画线的代码
void CEastDrawView::DrawLine(CDC *pDC, CPoint sp, CPoint tp)
{ CPen m_pen;
pDC->SetROP2(R2_NOTXORPEN);
m_pen.CreatePen(PS_SOLID,1,RGB(0,0,0));
CPen* pen=(CPen*)pDC->SelectObject(&m_pen);
COLORREF OldColor=pDC->SetBkColor(pDC->GetBkColor());
int OldBkMode=pDC->SetBkMode(TRANSPARENT);
pDC->MoveTo(sp);
pDC->LineTo(tp);
pDC->SelectObject(pen);
pDC->SetBkMode(OldBkMode);
pDC->SetBkColor(OldColor);
}
}
enum {ppoint,line,bline,pline,circle,rectangle,muli,text,pic} DStatus;
View 的左键代码
void CEastDrawView::OnLButtonDown(UINT nFlags, CPoint point)
{ dCount=dCount+1;
CClientDC dc(this);
if (DStatus==line)
{ if (dCount==2)
{dCount=0;
DlPoint=false;
}
else if (dCount==1)
{ s_Point=point;
DlPoint=true;
}
else
{DlPoint=false;
}
}
CScrollView::OnLButtonDown(nFlags, point);
}
//////////////////////////////////////////////////////////////
鼠标移动的代码
void CEastDrawView::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CPoint myPoint;
CClientDC dc(this);
this->OnPrepareDC(&dc);
if (dCount==1)
{
if (DStatus==line)
{
DrawLine(&dc,s_Point,point);
if (DlPoint==false)
DrawLine(&dc,s_Point,fpoint);
}
fpoint=point;
DlPoint=false;
}
CScrollView::OnMouseMove(nFlags, point);
//////////////////////////////////////////////////////////////////
画线的代码
void CEastDrawView::DrawLine(CDC *pDC, CPoint sp, CPoint tp)
{ CPen m_pen;
pDC->SetROP2(R2_NOTXORPEN);
m_pen.CreatePen(PS_SOLID,1,RGB(0,0,0));
CPen* pen=(CPen*)pDC->SelectObject(&m_pen);
COLORREF OldColor=pDC->SetBkColor(pDC->GetBkColor());
int OldBkMode=pDC->SetBkMode(TRANSPARENT);
pDC->MoveTo(sp);
pDC->LineTo(tp);
pDC->SelectObject(pen);
pDC->SetBkMode(OldBkMode);
pDC->SetBkColor(OldColor);
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货