CPaintDC, 用于在窗口客户区画图(仅限于在OnPaint处理函数中使用);
画线:
HDC方法
HDC hdc;
Hdc=::GetDC(m_hWnd);// ::是全局函数
MoveToEX(hdc,m_ptOrifin.x, m_ptOrifin.y,NULL); //Cpoint m_ptOrigin;前面已经定义和赋值
LineTo(hdc,point.x,point.y);//point是函数本身参数,确定当前鼠标的位置
::ReleaseDC(m_hWnd,hdc);
CDC类方法
CDC *pDC=GetDC();
pDC ->MoveTo(m_ptOrigin);
pDC ->LineTo(point);
ReleaseDC(pDC);
CClientDC类的方法
CClientDC dc(this);
dc.MoveTo(m_ptOringin);
dc.LineTo(point);
CWindowDC类的方法// 窗口内任意地方画图,包括非客户区
CwindowDC dc(this);
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
CwindowDC在Cview中和Cclient没什么区别
但当把this改成GetParent()不仅可以访问框架窗口了 还有系统菜单 等整个窗口 包括客服区和非客服区
若是GetDesktopWindow()则可以访问整个桌面
------------------------------------------------------------------
在传递LPRECT,LPCRECT或RECT结构作为参数的任何地方,都可以传递CRect对象来代替。
RECT结构的数据成员(left,top,right,和bottom)也是CRect的可访问数据成员。
原型一:
原型四:
原型五:
---------------------------------------------------------------------------------------------------------------
画笔
---------------------------------------------------------------------------------------------------------------
CPen pen(PS_SOLD,1,RGB(255,0,0));//第一个是现实模式 2是线粗细 3是颜色
CClientDC dc(this);
CPen *pOldPen=dc.SelectObject(&pen);//SelectObject 是绑定画笔
dc.MoveTo(m_ptOrigin);
dc.Line(point);
dc.SelectObject(pOldPen);
画刷
CBrush brush(RGB(255,0,0));
CRlientDC dc(this);
dc.FillRcet(CRect(m_ptOringin,point),&brush);
位图的画刷
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BITMAP1);
CBrush brush(&bitmap);
CClientDC dc(this);
dc.FillRect(Crect(m_ptOrigin,point),&brush);
画矩形
CClientDC dc(this);
dc.Rectangle(CRect(m_ptOrigin,point));
但画出的矩形相互遮盖
因为画矩形时里面有个默认白色画刷,所以画矩形时就填充了
实现交叉
CClientDC dc(this);
CBrush *pBrush=Cbrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH);
CBrush *pOldBrush=dc.SelectObject(pBrush);
dc.Rectangle(CRect(m_ptOrigin,point));
dc.SelectObject(pOldBrush);
画 线 用
CClient dc(this);
if(m_bDraw==TRUE)
{
}
画有颜色
CClient dc(this);
CPen pen(PS_SOLID,1,RGB(255,0,0));
CPen *pOldPen=dc.SelectObject(&pen);
if(m_bDraw==TRUE)
{
}
dc.SetectObject(pOldPen);
画扇形
CClient dc(this);
CPen pen(PS_SOLID,1,RGB(255,0,0));
CPen *pOldPen=dc.SelectObject(&pen);
if(m_bDraw==TRUE)
{
}
dc.SetectObject(pOldPen);