C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  117 Posts :: 2 Stories :: 61 Comments :: 0 Trackbacks

常用链接

留言簿(8)

搜索

  •  

最新评论

阅读排行榜

评论排行榜

    在该随笔中将介绍一些GDI的绘图函数,以加深您对于程序绘图的认识。

1、文字输出
     窗口画面上的文字输出比后面所要介绍的几个绘图函数还要重要,因为在程序设计时,可能有时需要在画面上显示一些数据和信息,以利于程序本身的追踪与排错。

范例ch2_2:根据鼠标的移动,将光标所在位置的坐标值显示在窗口中。
下载:ch2_2(上传到windows live空间,可能需要MSN账号登陆)
说明:程序源代码中有相关的注释。
运行结果如下图:


2、多边形函数
    下表中给出了GDI函数中关于多边形的绘图函数: 

函数名称

说明

Polygon

绘制封闭多边形

PolyLine

绘制多边线条

PolylineTo

以当前画笔所在位置绘制多边线条

PolyPolygon

绘制多个封闭多边形

PolyPolyline

绘制多个多边线条

    以上几个函数的使用方法大同小异,以Polygon()函数来做说明。
BOOL Polygon(HDC hdc, CONST POINT 点数组指针, int 多边形点数);  //绘制多边形
    第2个参数输入的是一个POINT结构的数组指针,POINT可用于描述一个坐标点,其结构如下:
typedef struct tagPOINT{
                                                        LONG x; 
// X坐标
                                                        LONG y; // Y坐标
                                                      }
 POINT;

范例ch2_3:展示多边形绘制函数的用法,并在窗口中绘制多边形。
下载:ch2_3(上传到windows live空间,可能需要MSN账号登陆)
说明:程序源代码中有相关的注释。
运行结果如下图:


3、封闭图形函数
    下边再来讨论一下封闭几何图形的绘制方法,“画笔与画刷”随笔中介绍了画矩形的Rectangle()函数,现在再来看看画椭圆形的GDI函数。
BOOL Ellipse( HDC hdc,   //绘制椭圆形
                                    int 外围矩形左上点X坐标,
                                   
int 外围矩形左上点Y坐标,
                                   
int 外围矩形右下点X坐标,
                                   
int 外围矩形右下点Y坐标);
     上面的函数说明确定一个外围矩形就可以产生椭圆形。
      
     下面再来看看绘制圆角矩形的函数。
BOOL RoundRect( HDC hdc,    //绘制圆角矩形 
                                             int 外围矩形左上点X坐标,
                                             
int 外围矩形左上点Y坐标,
                                            
int 外围矩形右下点X坐标,
                                            
int 外围矩形右下点Y坐标

                                            
int 圆角上椭圆长,
                                            
int 圆角上椭圆高)
;
    在这个函数中,除了给定外围矩形的坐标外,还给定了圆角上椭圆的长与高,用来表示圆角的弧度。

    最后来说明绘制扇形(Pie)与弓形(Chord)函数,扇形与弓形都是椭圆的一部分。
    扇形与弓形都有连接的起点与终点,不同之处在于,扇形还会与椭圆的中心点相连接,而弓形则直接连接起点与终点。绘制扇形的函数为Pie(),绘制弓形的函数则为Chord(),两者输入的参数意义都相同,下面以Pie()函数为例来进行说明。
BOOL Pie (  HDC hdc,   //绘制扇形
                     
int 外围矩形左上点X坐标,
                     
int 外围矩形左上点Y坐标,
                     
int 外围矩形右下点X坐标,
                     
int 外围矩形右下点Y坐标,
                      
int 起点X坐标,
                     
int 起点Y坐标,
                     
int 终点X坐标,
                     
int 终点Y坐标);

范例ch2_4:显示封闭图形绘制函数的用法,并在窗口中绘制不同图形。
下载:ch2_4(上传到windows live空间,可能需要MSN账号登陆)
说明:程序源代码中有相关的注释。
运行结果如下图:
 

PS:如想获得更多关于Visual C++游戏开发的内容,可点击随笔:《Visual C++游戏编程基础》学习笔记——索引随笔
posted on 2010-04-08 14:37 烟皑 阅读(7966) 评论(3)  编辑 收藏 引用 所属分类: 《Visual C++游戏编程基础》学习笔记

Feedback

# re: GDI绘图函数 2010-04-08 17:39 陈梓瀚(vczh)
GDI原则上可以做到跟GDI+一样,使用带透明渐变颜色或图片的Brush,使用任意Brush构造Pen,使用任意Brush和Pen画图。虽然效率可能会慢一点点(GDI+也快不起来),只要你熟练地将clipping和transparent API用好。

http://www.cppblog.com/vczh/archive/2009/08/02/91972.html  回复  更多评论
  

# re: GDI绘图函数 2010-04-08 17:41 烟皑
clipping和transparent API?
刚接触,不是很了解的说,为什么要把这两个掌握好呢?  回复  更多评论
  

# re: GDI绘图函数 2012-05-11 15:27 萨芬的
是的  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理