首页 > 代码库 > VC几种不同的画线方法

VC几种不同的画线方法

1. 画线

方法I:使用HDC (SDK模式)

HDC hDC;
hDC = ::GetDC(m_hWnd);                  	//此处要用全局的::GetDC,否则默认用CDC的。
MoveToEx(hDC, point1.x, point1.y, NULL);  //MoveToEx,先移到初始点,然后再画线
LineTo(hDC, point2.x, point2.y);
::ReleaseDC(m_hWnd, hDC);               	//释放也要用全局::ReleaseDC

方法II:使用CDC(MFC模式)

CDC *pdc=GetDC();  
pdc->MoveTo(point1);  
pdc->LineTo(point2);  
ReleaseDC(pdc);  

方法III:使用CClientDC(CClientDC继承自CDC,不需要手动GetDC和ReleaseDC,传递this或GetParent())

CClientDC dc(GetParent());  //可以在Frame下画线  
dc.MoveTo(m_ptOrigin);    
dc.LineTo(point);  

方法IV:使用CWindowDC(CWindowDC继承自CDC,包含客户区和非客户区,可以在整个屏幕下画线 )

CWindowDC dc(GetDesktopWindow());
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);


2. 设置线条的颜色,样式,宽度

方法1:

CClientDC dc(this);  
CPen pen(PS_DASH,1,RGB(255,0,0));     //定义一个画笔,样式为破折号,颜色为红色,宽度为1像素  
CPen *cOldPen=dc.SelectObject(&pen);  //将新画笔选到dc中,并保存之前的画笔  
dc.MoveTo(m_ptOrigin);  
dc.LineTo(point);  
dc.SelectObject(cOldPen);             //还原旧画笔 

方法2:

CDC *pDC = GetDC();
CPen pen(PS_SOLID, 2, RGB(200,200,200));	//定义一个画笔,样式为实线,颜色为灰色,宽度为2像素  
CPen *pOldPen = pDC->SelectObject(&pen);  //将新画笔选入设备描述表,并返回之前的画笔
pDC->MoveTo(m_ptOrign);
pDC->LineTo(point);
pDC->SelectObject(pOldPen);               //还原旧画笔
ReleaseDC(pDC);





VC几种不同的画线方法