📄
字号:
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=gb_2312-80">
<meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
<title></title>
</head>
<body bgcolor="#FFFFFF">
<NOBR>
<p><img src="/CiwImg/Ciw.gif"><img src="/CiwImg/Libra.gif"></NOBR> </p>
<table border="0" width="420">
<TBODY> <tr>
<td align="right"><font size="2"><em>[一九九七年八月四日
总第669期] 第145版</em></font> </td>
</tr>
</TBODY></table>
<p><img src="/CiwImg/RedLine.GIF" width="420" height="0"> </p>
<p align="center"><font color="#118811" size="4"><strong>用Delphi实现位图显示特技</strong></font>
<br>
<br>
<font color="#118811" size="3"><em>张晓辉 王孝军</em></font>
<br>
在应用程序中引入位图并以多种特技显示,会使程序<br>
界面生动形象,充满魅力。那么在Delphi环境中如何实现<br>
这一切呢?笔者在用Delphi开发一个多媒体系统时发现了<br>
实现位图显示特技的两种方法,下面将对这两种方法予以<br>
介绍,供Delphi爱好者参考。<br>
<br>
一、画布Tcanvas简介<br>
<br>
Delphi中与绘图和位图操作有关的对象是画布Tcanva<br>
s。Tcanvas对象功能强大,封装了WindowsAPI的GDI,用<br>
户可以很方便地在画布上绘制直线、矩形、椭圆、多边形<br>
等基本图形,还可以显示、拷贝位图,却不必关心设备上<br>
下文等GDI概念,极大地方便了用户。Tcanvas对象本身并<br>
不是一个构件,不单独使用,它总是作为其它对象的属性<br>
来使用的。Delphi有四个对象具有画布属性,它们是TForm<br>
、TImage、TPaintbox和Tbitmap,其中前三者是可视化构<br>
件。至于Tcanvas的详细情况,可以参考Delphi的联机帮<br>
助。<br>
<br>
实现简单的位图显示特技,实际上就是以不同的方式<br>
逐渐将源位图拷贝到Tcanvas类型的对象上,如从位图的<br>
中央开始拷贝一个矩形区域到屏幕中央,矩形区域不断扩<br>
大直到拷贝整个位图,其视觉效果就是位图从屏幕中央向<br>
四周扩散。不同的拷贝方式就形成了多种特技形式,如扩<br>
散、拉动和百叶窗等。对于每种特技形式灵活运用,又可<br>
演变出多种花样,如扩散可以演变为从上向下、从左向右<br>
、从中间向四周和相反方向的扩散,以及从一角向对角方<br>
向扩散的特技花样。<br>
<br>
实现上述位图显示特技的原理很简单,关键是怎样实<br>
现位图的拷贝。在Delphi中有两种拷贝位图的方法,相应<br>
地就有两种实现位图显示特技的方法,一种是用Tcanvas<br>
对象的方法CopyRect,另一种是调用WindowsAPI的BitBlt<br>
函数。下面就以两种特技的实现为例分别介绍这两种方法<br>
。<br>
<br>
二、方法之一:调用CopyRect<br>
<br>
Tcanvas对象与拷贝位图有关的是CopyMode属性和Cop<br>
yRect方法,其中CopyMode定义拷贝的模式,而Copy
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -