天天看点

MFC中CDC画线总结

MFC画线需要起点坐标和终点坐标,利用通过MoveTo函数和的LineTo函数来连接起点和终点形成线.MFC提供了一个绘图的封装类CDC,CDC类的派生类如下图所示,所以MFC的画线就有5种:CDC,CDlinetDC,CMeatFileDC(未验证),CPaintDC,CWindowDC本文对上述四种方法进行演示。

MFC中CDC画线总结

 画图就是得到当前画图窗口的设备描述表,一般使用的GetDC()函数获得;然后将其与CDC设备描述表相关联。

m_ptOrigin画线起点,点画线终点。

1.CDC 

    CDC * pDC = GetDC();

    了pdc->通过MoveTo(m_ptOrigin);

    了pdc->的LineTo(点);

    ReleaseDC(PDC);

2. CClientDC是CDC的派生类,在构造函数时调用DetDC,在分构时调用ReleaseDC,所以在使用时不需要显示的调用GetDC函数.CClientDC

    dc(this);

    dc.MoveTo(m_ptOrigin);

    dc.LineTo(点);

3.一个CPaintDC对象只在响应一个WM_PAINT消息的时候被使用,通常是在你的OnPaint消息处理成员函数中。

void CDrawView :: OnPaint()

{

    CPaintDC dc(this); //绘制

    dc.MoveTo(10,10)的设备上下文;

    dc.LineTo(500500);

}

也可以定义将绘制(DC)函数,并把绘制函数写在Opaint函数里,在绘制利用写绘图函数。

4.CWindowDC是CDC的派生类,在构造函数时调用DetDC,在分构时调用ReleaseDC,所以在使用时不需要显式的调用GetDC函数。

    CWindowDC dc(GetDesktopWindow());

    dc.MoveTo(m_ptOrigin);

    dc.LineTo(点);

5.可以利用SDK函数来画图。

    HDC hdc;

    hdc = :: GetDC(m_hWnd); // SDK函数

    MoveToEx(HDC,m_ptOrigin.x,m_ptOrigin.y,NULL);

    的LineTo(HDC,point.x,point.y);

    :: ReleaseDC(m_hWnd,HDC);

CDC 是MFC的DC的一个类,HDC是DC的句柄。 API中的一个类似指针的数据类型.CDC等设备上下文类,含有都类一个的成员变量:m_hDc,用来保存与该类相关的句柄。其道理与CWnd的类提供m_Wnd成员变量保存与窗口相关的句柄。通过SDK函数的GetDC(m_hWnd)得到当前设备句柄。 

MFC中CDC画线总结