📄 003.htm
字号:
<HTML><HEAD><meta http-equiv="Content-Type" content="text/html; charset=GB2312"><TITLE>-->DELPHI专题--多媒体类-->WINDOWS基于调色板的图像消隐</TITLE>
<META NAME="keywords" CONTENT=" DELPHI专题--多媒体类 WINDOWS基于调色板的图像消隐">
<META NAME="description" CONTENT=" - DELPHI专题--多媒体类 - WINDOWS基于调色板的图像消隐">
<style>
<!--
#page {position:absolute; z-index:0; left:0px; top:0px}
.tt3 {font: 9pt/12pt "宋体"}
.tt2 {font: 12pt/15pt "宋体"}
a {text-decoration:none}
a:hover {color: blue;text-decoration:underline}
-->
</style>
</HEAD>
<a href="index.html">返回</a>
<body text="#000000" aLink=#9900ff link=#006699 vLink=#006699 bgcolor="#FFFFFF" leftmargin="3" topmargin="3" marginheight="3" marginwidth="3">
<TABLE WIDTH="108%" CELLPADDING=10 CELLSPACING=0 BORDER=0>
<TR>
<TD class="tt2" bgcolor="#F5F8F8" width="90%"><center><B><FONT style="FONT-SIZE: 16.5pt" COLOR="#FF6666" FACE="楷体_GB2312">WINDOWS基于调色板的图像消隐</FONT></B></center>
<hr color="#EE9B73" size="1" width="94%">
<p class="tt2">图像渐隐在Windows的多媒体程序设计中是一种常用的技术,主要用来制作程序片头或者多幅图像之间的切换等。利用图像渐隐技术可以使程序具有动画效果,从而增添程序的魅力。<br>
图像渐隐实现的方法很多,例如利用调色板以及利用光栅映射模式等,而调色板方法无疑是其中最快速的一种。需要指出的是,这种方法只能在基于调色板的显示模式下工作。在Windows的显示模式中,只有256色模式是基于调色板的,这种模式是多媒体程序经常采用的。<br>
在基于调色板的256色模式下,当一幅图像显示时,Windows把图像的逻辑调色板载入,并通过调色板映射把逻辑调色板映射到系统调色板,图像的每一像素的显示颜色都映射自系统调色板的一个颜色索引值,每个索引对应一个24位的RGB全彩色值。当系统调色板改变时,当前引用系统调色板的窗口的像素颜色也随之改变,而这种改变是系统在硬件刷屏中自动完成的,速度极快,这样就为我们利用调色板实现图像的动画渐隐提供了引擎。实际上,利用这种技术可以实现多种动画效果,图像渐隐只是其中的一种。<br>
在下面的例子中,首先在窗口的黑色背景上显示一幅256色的DIB图像,然后在系统时钟消息进程中动态地修改图像的逻辑调色板的颜色值,使每一个颜色值逐渐向背景颜色值趋近,渐隐的速度可以用时钟的时间片间隔来控制。当渐隐开始时,可以看到整幅图像逐渐变暗,最后消失在黑色的背景中,整个过程十分平滑,就如你在电影片头中看到的一样。<br>
本例用Delphi 1.0在Windows 3.2下实现,下面给出程序的主要部分及注释。<br>
<br>
unit Bmp-Disaper;<br>
interface<br>
uses<br>
SysUtils,WinTypes,WinProcs,Messages,Classes,Graphics,Controls,Forms,Dialogs,Ex<br>
tCtrls,StdCtrls;<br>
type<br>
TForm1=class(TForm)<br>
Image1:TImage;{显示渐隐图像}<br>
Timer1:TTimer;{时钟构件}<br>
Panel1:TPanel;{显示渐隐过程,已渐隐为背景色的颜色数}<br>
Button1:TButton;{开始渐隐按钮}<br>
procedure Timer1 Timer(Sender:TObject);{始终控制过程}<br>
procedure Button1 Click (Sender:TObject);{激发渐隐过程}<br>
procedure FormCreate (Sender:TObject);{窗体构造过程}<br>
private<br>
PalDevice:Imteger;{调色板模式标志}<br>
go:integer;{渐隐开始标志}<br>
pal:arrar[0...255] of TPaletteEntry;{逻辑调色板}<br>
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -