当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: 图形设备接口(GDI,Graphics Device Inte
 

 

    摘要: 在《程序员》2003年第12期的一篇访谈录中,ruby的发明人matz较详细地阐述了ruby的设计思想及遵循的原则,其中大部分我都深以为然,特别是他高度重视语言设计过程中人的因素则更是让人激赏。不过他对正交特性的看法却让我颇为迷惑。 正交(orthogonal)本来是一个几何概念,表示的是垂直相交,后来又被扩展到线性代数中,表示内积为零的两个向量之间的关系。线性空间中一组两两正交的非零向量被称......
    摘要: 这是一款可以以曲线或柱状图的形式实时动态显示数据的控件。 主要特点是:支持显示浮点数、负数,显示数据范围大、可以自定义显示范围也可自动选择范围,还可锁定显示范围。 主要技术来源于网上,我只是对其分离改进了一下。有需要的朋友可以看看或联系我 email: wlzqin@3stonesoft.com wlzqin@sina.com qq :8573980 msn :wlzqi@hotmail.co......


Windows图像编程概要
图形设备接口(gdi,graphics device interface)的主要目标之一是支持在输出设备(如视频显示器.打印机与绘图仪)上的与设备无关的图形. gdi通过将应用程序与不同输出设备特性相隔离,使windows应用程序能够毫无问题地在windows支持的任何图形输出设备上运行.windows中的图形基本上是由从gdi.exe模块中输出的函数处理的(尽管一些绘制函数实际上具有user.exe的入口点),gdi.exe模块调用在不同驱动程序文件中的例程,其中有一个.drv驱动程序文件用于控制显示屏幕,并且可能有一个或多个其他的.drv驱动程序文件用来控制打印机或绘图仪.windows gdi使用两种坐标系统.使用虚拟坐标系统可以使程序不依赖于具体的硬件,使用设备坐标系统可以使程序与硬件紧密相联.gdi含有在windows应用程序内部执行.且与设备无关的图形操作函数,这些函数可产生各种各样的线.正文与位图,它们可以输出到许多不同的输出设备上.gdi允许一个应用程序产生笔.刷子.字体与位图,以供特定的输出操作使用.下面列出gdi中几组比较常用的函数:

·椭圆与多边形函数 【程序编程相关:《Visual C++技术内幕》学习笔记

·设备上下文函数 【推荐阅读:仿Explorer的目录树视图类

·位图函数 【扩展信息:服务程序中如何以当前登陆用户身份运行程序

·绘图工具函数

·绘图属性函数

·正文函救

·映射函数.

·坐标函数

·元文件(metafile)函数

·区域函数

·裁剪(clipping)函数·

窗口应用程序输出图形的操作步骤如下:

①取得指定窗口的当前显示设备上下文,显示设备上下文实际上是一个数据结构,它包括该窗口的参数及各种图形.文字属性的现行设定值,它们对以后的图形.文字输出命令起控制作用.

②选择用户坐标系及映射方式.

③设定用户坐标系中的观察窗口与设备坐标系中的显示视区.

④输出图形.文字与图象.

⑤释放所使用的显示设备上下文.

当想要在图形输出设备(例如屏幕或打印机)上绘制图形时,必须首先获得设备上下文的句柄.先给出这个句柄,windows才允许程序使用设备,在gdi函数中将句柄作为一个参数传入,向windows标明需要使用的设备.设备上下文中包含许多属性,当gdi在不同的设备上工作时都要用到这些属性.使用这些属性可使gdi只关心起始与终止坐标的大小,而不必关心有关对象的其他属性,如颜色.背景等等,因为这些都是设备上下文的一部分.当需要修改这些属性时,只需调用一个修改设备上下文中属性的参数,以后的程序中都使用修改后的设备上下文属性.设备上下文是连接windows应用程序.设备驱动程序以及输出设备的纽带.获取设备上下文句柄有多种方法.最一般的方法是当处理一条消息时获得了设备

上下文.并在退出窗口之前释放它.一般的处理方法如下:

在处理wm_paint消息时

case wm_paint:

hdc=beginpaint(hwnd,&ps)

       //代码

endpaint (hwnd,&ps);

其数据结构为:

hdc hwnd;

paintstruct ps;

而在windows.h中定义了paintstruct的数据结构.

type struct tagpaintstruct {

hdc hdc;

bool ferase;

rect rcpaint;

bool frestore;

bool flncupdate;

byte rgbreserved[16];

}paintstruct;

其中,hdc用于标识显式上下文,ferase指出背景是否重画,rcpaint是涂色矩形,其余的域均为保留.这里的hdc是beginpaint返回的设备上下文句柄,有了从beginpaint获取的设备上下文句柄,就可以也只能在ps指出的rcpaint的矩形内绘图,endpaint调用使这一区域有效.

第二种方法如下所示,使用这种方法获取与释放设备上下文可以在整个用户区内画图,图形在整个用户区域内都有效:

hdc=getdc (hwnd );

…画图操作…

releasedc (hwnd , hdc );

使用下面第三种方法获取与释放设备上下文,可以在整个窗口内画图,图形在整个窗口内有效:

hdc=getwindowdc(hwnd);

…画图操作…

releasedc(hwnd,hdc);

使用下面第四种方法获取与释放设备上下文,可以在整个显示器区域内画图,图形在整个显示器区域内部有效:

hdc=createdc (lpszdriver ,lpszdevice ,lpszoutput , lpdata);

…画图操作…


...   下一页
 ·vc最常用操作程序20项列举    »显示摘要«
    摘要:   一、打开cd-rom   mcisendstring("set cdaudio door open wait",null,0,null);   二、关闭cd_rom   mcisendstring("set cdaudio door closed wait",null,0,null);   三、关闭计算机 osversioninfo osversioninfo; //......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE