CDC* pDC=GetDC();
CPen newPen(PS_SOLID,2,RGB(0,0,255));
CPen* poldPen=pDC->SelectObject(&newPen);
pDC->MoveTo(20,20);
pDC->LineTo(x1*FRONTWIDTH+20,y1*(FRONTHEIGHT-14)+20);
pDC->SelectObject(&poldPen);擦掉(再画一次,颜色改为你的背景颜色)
CPen newPen1(PS_SOLID,2,背景颜色);
CPen* poldPen1=pDC->SelectObject(&newPen1);
pDC->MoveTo(20,20);
pDC->LineTo(x1*FRONTWIDTH+20,y1*(FRONTHEIGHT-14)+20);
pDC->SelectObject(&poldPen1);
CPen newPen(PS_SOLID,2,RGB(0,0,255));
CPen* poldPen=pDC->SelectObject(&newPen);
pDC->MoveTo(20,20);
pDC->LineTo(x1*FRONTWIDTH+20,y1*(FRONTHEIGHT-14)+20);
pDC->SelectObject(&poldPen);擦掉(再画一次,颜色改为你的背景颜色)
CPen newPen1(PS_SOLID,2,背景颜色);
CPen* poldPen1=pDC->SelectObject(&newPen1);
pDC->MoveTo(20,20);
pDC->LineTo(x1*FRONTWIDTH+20,y1*(FRONTHEIGHT-14)+20);
pDC->SelectObject(&poldPen1);
使用背景混合模式
CDC* pdc=GetDC();
//得到对话框背景色
pdc->SetBkMode(TRANSPARENT);
//绘制原文本
pdc->TextOut(50,40,_T("121313"));
//覆盖原文本
pdc->SetROP2(R2_NOP); //将画笔与画刷的颜色设置成背景色
pdc->TextOut(50,40,_T("121313"));
//输出新文本
pdc->SetROP2(R2_COPYPEN); //恢复画笔与画刷默认的颜色
pdc->TextOut(50,40,_T("7804957"));
ReleaseDC(pdc);
/////////////////////////////////////
HDC hDC ;
hDC = ::GetDC(NULL);
if(m_hSourceBitmap!=NULL)
{
DeleteObject(m_hSourceBitmap);
m_hSourceBitmap=NULL;
}
m_hSourceBitmap = CreateDIBSection( hDC,(LPBITMAPINFO)m_pcImage, 0,&m_ppvBits,NULL, 0 );
if(m_hSourceBitmap==NULL)
{
MessageBox("分配内存失败","警告信息");
return false; }
::ReleaseDC( NULL,hDC );
m_pOldBitmap=(HBITMAP *)m_pMemDC->SelectObject(m_hSourceBitmap);
memcpy( m_ppvBits, m_pcImageData, m_lLineBytes*m_lHeight );这是我的程序的一部分,m_pcImagedata就是位图数据,以后就可以用m_pMemDC画图了,想显示的时候bitblt一下就可以了.
你查一下双缓冲画图可以查到的.
当然上面的重画也是可以做到的,只是要记以前的点,
CBrush brush;
brush.CreateSolidBursh(COLORREF(RGB(255,255,255)));
CRect rc;
GetClientRect(&rc);
pDC->FillRect(rc,&brush);