绘制图形

           绘制图形
1:相关CDC类提供的图形绘制方法
     MoveTo(int x,int y);用于移动当前的坐标点到指定的位置上
     LineTo(int x,int y);用于从当前坐标点绘制一条直线到参数指定的位置
           x,y表示x和y轴坐标的终点
    Arc(int x1,int y1,int x2,int y2,int x3,int y3,int x4,int y4);
          以一个外接矩形为依据绘制一个椭圆的弧线
          x1,y1左上角,x2,y2右下角,x3,y3弧线起点,x4,y4,弧线终点
  示例代码:绘制五子棋棋盘
  在OnPaint()中
else
{
 CDC *p=GetDC();//获取设备上下文
 CPen pen;//定义画笔
 pen.CreatePen(PS_SOLID,1,RGB(255,0,0));//创建颜色画笔
 CPen *poldone=p->SelectObject(&pen);//选中当前的画笔
 int nOriginX=30;
 int nOriginY=30;
 for(int i=0;i<10;i++)   //绘制列
 {
 p->MoveTo(nOriginX+i*30,nOriginY);  //定位直线的起点
 p->LineTo(nOriginX+i*30,300);
 }
        for(int j=0;j<10;j++)  //绘制行
 {
  p->MoveTo(nOriginX,nOriginY+30*j);
  p->LineTo(300,nOriginY+30*j);
 }
 p->SelectObject(poldone);  //恢复原来的画笔
 pen.DeleteObject();
  
 CDialog::OnPaint();
}
2 :绘制多边形
   常用方法
    BOOL Rectangle(int x1,int y1,int x2,int y2),绘制矩形
        x1,y1左上角,x2,y2又上角
    BOOL Rectangle(LPCRECT lpRect)绘制矩形
          lpRect是一个CRect对象指针,标志一个矩形区域
  BOOL RoundRect(int x1,int y1,int x2,int y2,int x3,int y3)//绘制圆角矩形
         x3,y3表示圆角的宽度和高度
   BOOL RoundRect(LPCRECT lpRect,POINT point)//绘制圆角矩形
                point表示圆角宽度和高度
   BOOL Polygon(LPPOINT lpPoints,int nCount)//利用当前的画笔根据列举的坐标点绘制一个多边形
     lpPoint 表示多边形的各个端点
      nCount表示lpPoint元素的数量
   BOOL Polyline(LPPOINT lpPoints,int nCount)//利用当前画笔绘制坐标点中的直线
     lpPoints表示各个端点,相邻的端点将用直线连接
示例:绘制多边形
else
{
 CDC *p=GetDC();
 CRect rectangle(30,20,120,100);//定义一个矩形区域
 p->Rectangle(rectangle);//绘制
 CRect round(30,130,120,100);
 p->RoundRect(round,CPoint(10,10));  //绘制圆角矩形
 CPoint pts[6]={CPoint(300,50),CPoint(400,50),CPoint     (450,100),CPoint(400,150),CPoint(300,150),CPoint(500,500)};
 p->Polyline(pts,6);
  
     CDialog::OnPaint();
}
3:绘制控件外观
 调用CDC类的DrawFrameControl(LPRECTl pRect,UINT type,UINT state)
    pRect:控件所在的区域
    type:表示控件的类型DFC_BUTTON是按钮,DFC_CAPTION表示标题栏,
    DFC_MENU表示菜单,DFC_SCROLL表示滚动条
    nState表示绘制控件的风格和状态,依赖于控件的类型
  
4:填充区域
用某一颜色或位图填充一个区域。CDC类提供了四个填充区域的函数
   void FillRect(LPCRECT lpRect,CBrush *pBrush)//用画刷填充
         lpRect表示需要填充的矩形区域
         pBrush表示一个画刷对象指针,函数用该画刷填充矩形区域
   void FillSolidRect(LPCRECT lpRect,COLORREF clr);//用指定的颜色填充矩形区域
     clr:标志一个RGB颜色值
   BOOL FillRgn(CRgn *pRgn,CBrush *pBrush)//用标志的画刷填充一个选区
      pRgn:表示一个选区对象,选区可以通过系统提供的API函数CreateRectRgn,CreateEllipticRgn,CreatePolygonRgn等创建
    BOOL FillPath()//用当前的画刷填充路路径

  示例:
else
{
 CDC *p=GetDC();
 CRect item(30,30,100,120);  //定义一个区域
 CBrush brush(RGB(255,128,128)); //定义画刷
 p->FillRect(item,&brush); //使用颜色填充画刷
 brush.DeleteObject();

 CBitmap bmp;//创建位图对象
 bmp.LoadBitmap(IDB_BITMAP1);
 brush.CreatePatternBrush(&bmp);//创建位图画刷
 CRect  bmprc(110,40,200,200);
 p->FillRect(bmprc,&brush);
 bmp.DeleteObject();
 brush.DeleteObject();
  
 CRect rectrc(210,30,300,120);
 CRect hrc(280,60,350,140);
 p->Rectangle(rectrc);//绘制矩形边框
 p->Rectangle(hrc);
 HRGN hrect=CreateRectRgn(210,30,300,120);//创建矩形选区
 HRGN hrgn=CreateRectRgn(280,60,350,140);
 HRGN hret=CreateRectRgn(0,0,0,0);
 CombineRgn(hret,hrect,hrgn,RGN_AND);//组合选区,获取公共部分
 brush.CreateSolidBrush(RGB(255,0,0));
 CRgn rgn; //定义一个选区
 rgn.Attach(hret);//将选区对象附加一个选区句柄
 p->FillRgn(&rgn,&brush);
 brush.DeleteObject();
 rgn.DeleteObject();
 DeleteObject(hrect);
 DeleteObject(hrc);
 DeleteObject(hret);
 CDialog::OnPaint();
}

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值