- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第7章 图形与图像.DOC
第7章 图形与图像
由于Windows是一个图形界面的操作系统,所以传统的Windows程序设计方法在处理有关图形设计时,多半是遵循着Windows诞生以来的方法,通过所谓的GDI(Graphics Device Interface)来进行图形的绘制。GDI式的绘图法对于早期曾经在Dos下自行编写绘图单元的程序设计师来说,虽然减少了许多类似于“重新发明轮子”的麻烦,但是相对地也带来另外一种程序设计的思维模式转变,相信曾经经历过这段过程的人都还心有余悸。对于完全没有任何程序设计经验的初学者来说,庞大复杂的GDI绘图系统更是一个难以跨越的学习障碍。但是,在Windows中不是没有一个简易可行的绘图方法。本章要为你介绍的Delphi绘图系统,就提供了一个高度抽象化的绘图单元,让你可以用非常直观的方式来实现Windows下的绘图功能。
在Delphi中,专门定义了一组对象和部件用以绘制图形,并能完成一些简单的图像功能。利用这些对象、部件的方法,可以方便地绘制各种常用图形;通过设置它们的属性,能得到不同风格的图形。另外,通过对鼠标事件的定义,可以方便的设计图形绘制程序。
7.1 常用图形对象及简单应用
绘制图形一般要涉及到在什么地方绘图,使用何种颜色画和使用何种填充图案等问题。Delphi为用户提供了一个专供绘图的画布Canvas,每一个具有Canvas属性的对象,都可以作为绘制图形的环境。例如,对于TForm对象(通常所说的窗口),它也有Canvas属性,换句话说,可以直接在窗体绘制各种各样的图形。
7.1.1 画布对象(TCanvas Object)
TCanvas对象是一个用于绘图的表面,在这个区域上,程序可实现各种绘图功能,很多组件(如TIMage,TMemo、TPaintBox等)的Canvas属性就是TCanvas对象。为了在一个组件上创建图形,TCanvas类中的成员调用Windows GDI函数。Canvas属性是对Windows GDI的一个综合的、面向对象的封装。Canvas总是准备着被使用,对它自己来说是一个对象。
下面我们通过一个简单的例子来说明如何利用Canvas属性来绘图。
启动Delphi 6,新建一个应用程序。为窗体Form1的OnPaint事件添加如下代码:
procedure TForm1.FormPaint(Sender: TObject);
begin
Form1.Canvas.TextOut(10,10,Canvas Object);
Form1.Canvas.RoundRect(60,60,200,140,10,10);
end;
编译并运行该程序,结果如图7-1所示。
在上面的程序中,我们应用了Canvas的TextOut和Ellipse方法,分别是输出一行文字和画一个圆角矩形,输出文本的字体、圆角矩形的线条和填充色都是采用的默认值,通过改变Canvas的属性可以使输出的结果更加美观。
图7-1 Canvas应用实例
下面我们再来看一个小程序,打开一个新工程,为窗体Form1的OnPaint事件添加如下代码:
procedure TForm1.FormPaint(Sender: TObject);
var
A,x1,y1,x2,y2:Double;
D:Integer;
i:Integer;
E,M_PI:Double;
begin
D := 100;
M_PI := 3.1415926535897932;
for i := 0 to 720 do
begin
A := i * M_PI / 360;
E := D * (1 + sin(4 * A));
x1 := 320 + E * cos(A);
x2 := 320 + E * cos(A + M_PI / 5);
y1 := 240 + E * sin(A);
y2 := 240 + E * sin(A + M_PI / 5);
Canvas.MoveTo(Round(x1),Round(y1));
Canvas.LineTo(Round(x2),Round(y2));
end;
end;
运行该程序,结果如图7-2所示。
图7-2 Canvas应用实例
怎么样,酷吧。我们只是利用了Delphi的Canvas绘图的基本观念和几个简单的基本函数就做出了这么美丽的电脑绘图。
TCanvas对象很多方法,可完成常用的绘图功能,现将方法及功能简介如表7-1:
表7-1 TCanvas对象的方法
方法名称 函数形式 函
文档评论(0)