GDI

一、颜色、画笔和画刷

  1、使用画笔

    创建画笔函数CreatePen()

    HPEN CreatePen(int fnPenStyle,    //笔的样式,如PS_SOLID(实线),PS_DASH(虚线),PS_DOT(点),PS_DASHDOT(点划线),PS_DASHDOTDOT

             int nWidth,      //笔的像素宽度

             COLORREF crColor  //颜色,通过RGB定义

            );

    例子:红色笔

      HPEN red _pen=CreatePen(PS_SOLID,1,RGB(255,0,0));

    注意:将任何GDI对象选择到图形设备描述表,使用SelectObject函数

      如:HDC hdc;

        SelectObject(hdc,red_pen);

       销毁由DeleteObject()函数完成ReleaseObject(red_pen);

 

  2、使用画刷

    创建画刷有两种:实心的(Solid)和阴影的(Hatched)

    创建实心画刷: HBRUSH CreateSolidBrush(COLORREF crColor);

    例子:HBRUSH red_brush=CreateSolidBrush(RGB(0,255,0));

    创建阴影画刷:   HBRUSH CreateHatchBrush(int fnStyle, COLORREF clrref);

      fnStyle值有:HS_BDIAGONAL  从左上到右下的45度阴影线

             HS_CROSS      水平和垂直的交叉阴影线

             HS_DIAGCROSS  45度交叉阴影线

             HS_FDIAGONAL   从左下到右上的45度阴影线

             HS_HORIZONTAL  水平阴影线

             HS_VERTICAL    垂直阴影线 

 

 

二、点、线、平面多边形和圆

  1、绘制点

    COLORREF SetPixel(HDC hdc,int x,int y,COLORREF crColor);

    例:HDC hdc;

      SetPixel(hdc,1,1,RGB(255,0,0));

 

  2、绘制线段

    A、创建画笔,并在图形设备描述表中选定该画笔,所有线段都将使用该画笔来绘制

    B、设定线段的起始位置

    C、从起始位置到终点位置绘制线段(该终点位置成为下一条线段的起始位置)

    D、如果想绘制更多的线段,重复C

    设定该光标的初始位置的函数是MoveToEx函数

      BOOL MoveToEx(HDC hdc,int x,int y,LPPOINT lpPoint);    //最后一个参数是用来保存最后一个位置

      例:Point last_pos;

        MoveToEx(hdc,10,10,&last_pos);

    设置好线段的初始位置后,调用LineTo()函数来绘制一条线段

      BOOL LineTo(HDC hdc,int xEnd,int yEnd);

 

  3、绘制矩形

    A、用Rectangle()函数,原型如下:

    BOOL Rectangle(HDC hdc,int nLeftRect,int nTopRect,int nRightRect,int nBottomRect);

    B、用FillRect函数,原型如下:

    int FillRect(HDC hdc,CONST RECT*lprc,HBRUSH hbr);

     绘制一个填充的矩形,包含左上角点,不包含右下角点

     例:Rect rect{10,10,20,20};

       FillRect(hdc,&rect,CreateSolidBrush(RGB(255,0,0)))

    C、用FrameRect函数,原型如下

    int FrameRect(HDC hdc,CONST RECT* lprc,HBRUSH hbr);

     绘制仅有边界的中空的矩形

     

  4、绘制圆

    绘制椭圆的函数是Ellipse(),原型如下:

    BOOL ELLIPSE(HDC hdc,int nLeftRect,int nTopRect,int nRightRect,int nBottomRect);

    如果要画圆的话,必须首先确认作为边界的矩形是正方形

 

  5、绘制多边形

    绘制多边形的函数是Polygon()

    BOOL Polygon(HDC hdc,CONST POINT *lpPoints,int nCount);

    例:

    POINT poly[7]={p0x,p0y,p1x,p1y,p2x,p2y,p3x,p3y,p4x,p4y,p5x,p5y,p6x,p6y};

    Polygon(hdc,poly,7);

 

 

 

 

    

posted @ 2013-11-02 18:02  LOSER Z  阅读(419)  评论(0编辑  收藏  举报