⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 003.htm

📁 Delphi书籍--Delphi网上教程
💻 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>
&nbsp;&nbsp;&nbsp; 在基于调色板的256色模式下,当一幅图像显示时,Windows把图像的逻辑调色板载入,并通过调色板映射把逻辑调色板映射到系统调色板,图像的每一像素的显示颜色都映射自系统调色板的一个颜色索引值,每个索引对应一个24位的RGB全彩色值。当系统调色板改变时,当前引用系统调色板的窗口的像素颜色也随之改变,而这种改变是系统在硬件刷屏中自动完成的,速度极快,这样就为我们利用调色板实现图像的动画渐隐提供了引擎。实际上,利用这种技术可以实现多种动画效果,图像渐隐只是其中的一种。<br> 
&nbsp;&nbsp;&nbsp; 在下面的例子中,首先在窗口的黑色背景上显示一幅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 + -