DC使用入门

来源:互联网 发布:python string转list 编辑:程序博客网 时间:2024/06/06 12:30
本示例在View中 :
void CDrawView::OnLButtonUp(UINT nFlags, CPoint point) 
{
// TODO: Add your message handler code here and/or call default

//方式1:
HDC hdc;
hdc=::GetDC(m_hWnd);
MoveToEx(hdc,m_ptOrigin.x,m_ptOrigin.y,NULL);
LineTo(hdc,point.x,point.y);
::ReleaseDC(m_hWnd,hdc);:  //释放DC

//方式2:
CDC *pDC=GetDC();
pDC->MoveTo(m_ptOrigin);
pDC->LineTo(point);
ReleaseDC(pDC);   //释放DC

//方式3:
CClientDC dc(this);
//CClientDC dc(GetParent());     //获得父窗口(Frame)DC
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);      

       //方式4:
CWindowDC dc(this);
//CWindowDC dc(GetParent());   //父窗口DC
//CWindowDC dc(GetDesktopWindow());   //桌面DC
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);

CPen pen(PS_DOT,1,RGB(0,255,0));  //创建画笔
CClientDC dc(this);
CPen *pOldPen=dc.SelectObject(&pen);
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
dc.SelectObject(pOldPen);


CBrush brush(RGB(255,0,0));   //创建红色画刷

CBitmap bitmap;
bitmap.LoadBitmap(IDB_BITMAP1);  
CBrush brush(&bitmap);   //创建位图画刷
CClientDC dc(this);
dc.FillRect(CRect(m_ptOrigin,point),&brush);    //画刷填充矩形区域
//创建透明画刷
CBrush *pBrush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));   
CBrush *pOldBrush=dc.SelectObject(pBrush);    //选入DC
dc.Rectangle(CRect(m_ptOrigin,point));
dc.SelectObject(pOldBrush);     //返回原画刷


CView::OnLButtonUp(nFlags, point);
}