您的位置:首页 > 其它

绘制直线,画笔和画刷操作,绘制矩形,绘制扇形

2012-04-25 16:59 267 查看
看了资料,做了点总结,下面详细介绍绘制直线,画笔和画刷操作,绘制矩形,绘制扇形等操作:

需要定义的变量
private:
CPoint m_ptOld;
BOOL m_Draw;
CPoint m_ptOrigin;
\\初始化
CTest1View::CTest1View()
{
m_ptOrigin=m_ptOld=0;
m_Draw=FALSE;
// TODO: add construction code here
}
绘制直线
第一种方法:利用API函数
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);
第二种方法:利用CDC
CDC *pDc = GetDC();
pDc->MoveTo(m_ptOrigin);
pDc->LineTo(point);
ReleaseDC(pDc);
第三种方法:利用cclientDc(可以不用调用ReleaseDC,因为会自动调用)
\\CClientDC dc(GetParent());
\\可以获得父窗口的hdc
CClientDC dc(this);
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
第三种方法:利用CWindowDC
\\CWindowDC dc(GetParent());\\能在非客户区域作图
\\CWindowDC dc(GetDesktopWindow());\\能在整个区域作图
CWindowDC dc(this);
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
设置画笔
CPen pen(PS_SOLID,1,RGB(255,0,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));
CClientDC dc(this);
dc.FillRect(CRect(m_ptOrigin,point),&brush);
设置位图画刷
打开Insert->resource->选择bitmap->新建位图
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);
绘制连续的图案
CClientDC dc(this);
CPen pen(PS_SOLID,1,RGB(255,0,0));
CPen *pOldPen=dc.SelectObject(&pen);
if(m_Draw==TRUE)
{
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
m_ptOrigin=point;
}
dc.SelectObject(pOldPen);
绘制无边界的扇形
CClientDC dc(this);
CPen pen(PS_SOLID,1,RGB(255,0,0));
CPen *pOldPen=dc.SelectObject(&pen);
if(m_Draw==TRUE)
{
dc.MoveTo(m_ptOrigin);
dc.LineTo(m_ptOld);
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
m_ptOld=point;
}
dc.SelectObject(pOldPen);
绘制有边界的扇形
CClientDC dc(this);
CPen pen(PS_SOLID,1,RGB(255,0,0));
CPen *pOldPen=dc.SelectObject(&pen);
if(m_Draw==TRUE)
{
dc.MoveTo(m_ptOrigin);
dc.LineTo(m_ptOld);
//dc.MoveTo(m_ptOrigin);
dc.MoveTo(m_ptOld);
dc.LineTo(point);
m_ptOld=point;
}
dc.SelectObject(pOldPen);
扩展:

\\dc.SetROP2(R2_MERGENOTPEN);设置绘画模式
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐