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

📄 palette.htm

📁 这是用C++实现语音识别的一个插件。大家一起分享一下!
💻 HTM
字号:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>调色板</title>
<meta name="GENERATOR" content="Microsoft FrontPage 3.0">
</head>

<body>
<b><font FACE="黑体" SIZE="5">

<p align="center"></font></b><font size="6"><a name="目录"><font color="#FF8000"><strong><font
face="宋体">调色板</font></strong></font></a></p>
</font>

<p align="right" style="margin-top: -10; margin-bottom: -8"><a href="index.htm"
style="text-decoration: none"><font face="宋体"><span style="text-decoration: none">返回上级</span></font></a></p>

<hr>

<ol>
  <ol>
    <font size="4"><p ALIGN="JUSTIFY"></font><font FACE="宋体" SIZE="3">1、<a
    href="#什么是调色板?">什么是调色板?</a><br>
    2、<a href="#调色板的种类">调色板的种类</a><br>
    3、<a href="#对非主页面(Non-Primary Surfaces)设置调色板">对非主页面设置调色板</a><br>
    4、<a href="#共享调色板">共享调色板</a><br>
    5、<a href="#调色板动画">调色板动画</a></p>
    </font>
  </ol>
</ol>
<font FACE="宋体" SIZE="3">

<hr>
</font>

<blockquote>
  <font FACE="黑体"><b><p><a name="什么是调色板?">什么是调色板?</a></p>
  </b></font><font SIZE="3"><p align="right"><a href="#目录"><font face="宋体">返回目录</font></a></p>
  </font>
</blockquote>

<blockquote>
  <font FACE="宋体" SIZE="3"><p ALIGN="JUSTIFY">基于调色板的页面需要调色板才能真正有意义的显示出来。一个基于调色板的页面,通常也被称作一个“色彩索引”页面,仅仅是一些数字的集合,其中的每一个数字代表一个像素。每一个数字的值都对应于一个色彩表中的项,这个表告诉<font
  FACE="Arial" SIZE="3">DirectDraw</font>对这个像素使用什么样的颜色。<font
  FACE="Arial" SIZE="3">DirectDrawPalette</font>对象,通常简称为“调色板”,给你提供了一个及其方便的途径来管理调色板。那些使用<font
  FACE="Arial" SIZE="3">16</font>位或更高位像素格式的页面并不使用调色板。</p>
  <p ALIGN="JUSTIFY">提供<font FACE="Arial" SIZE="3">DirectDrawPalette</font>对象是为了拥有直接操作<font
  FACE="Arial" SIZE="3">16</font>和<font FACE="Arial" SIZE="3">256</font>色调色板的特性(一个<font
  FACE="Arial" SIZE="3">DirectDrawPalette</font>对象通常与一个<font FACE="Arial"
  SIZE="3">DirectDrawSurface</font>对象相依属)。一个<font FACE="Arial" SIZE="3">DirectDrawPalette</font>对象保留了一个从<font
  FACE="Arial" SIZE="3">0</font>到<font FACE="Arial" SIZE="3">255</font>的<font
  FACE="Arial" SIZE="3">256</font>色调色板的入口;它不保留<font FACE="Arial"
  SIZE="3">16</font>色调色板的任何入口。它允许直接对色彩表(<font
  FACE="Arial" SIZE="3">color table</font>)的直接操作。一个色彩表是一系列颜色值(典型的是<font
  FACE="Arial" SIZE="3">RGB</font>三个一组)。这个表可以包含<font FACE="Arial"
  SIZE="3">16</font>或<font FACE="Arial" SIZE="3">24</font>位的<font FACE="Arial"
  SIZE="3">RGB</font>色彩入口,代表与每一个索引相对应的颜色。对<font
  FACE="Arial" SIZE="3">16</font>色调色板来说,色彩表可以包含另一个<font
  FACE="Arial" SIZE="3">256</font>色调色板的索引。</p>
  <p ALIGN="JUSTIFY">调色板被材质图、离屏页面、覆盖页面所支持,它们并不需要与主页面拥有同样的调色板。</p>
  <p ALIGN="JUSTIFY">你可以通过调用<font FACE="Arial" SIZE="3">IDirectDraw2::CreatePalette</font>函数来创建一个调色板。该函数将返回一个指向<font
  FACE="Arial" SIZE="3">IdirectDrawPalette</font>接口的调色板对象的指针。你可以使用该接口的函数来操作调色板入口、获得关于调色板对象能力的信息、或初始化该对象(如果你用的是<font
  FACE="Arial" SIZE="3">CoCreateInstance</font>函数创建的它)。</p>
  <p ALIGN="JUSTIFY">你可以通过调用<font FACE="Arial" SIZE="3">IDirectDrawSurface3::SetPalette</font>函数将一个调色板连接到一个页面上。一个调色板可以被连接到若干个页面。</p>
  <p ALIGN="JUSTIFY">通过调用<font FACE="Arial" SIZE="3">IDirectDrawPalette::GetEntries</font>,应用程序可以获得这些表的入口,并且可以通过<font
  FACE="Arial" SIZE="3">IDirectDrawPalette::SetEntries</font>改变这些入口。这个函数有一个<font
  FACE="Arial" SIZE="3">dwFlags</font>参数,指定对于调色板的改动是否立即生效。</p>
  <font FACE="Arial" SIZE="3"><p ALIGN="JUSTIFY">DirectDrawPalette</font>对象为一个<font
  FACE="Arial" SIZE="3">8</font>位的调色板保留了从<font FACE="Arial" SIZE="3">0</font>到<font
  FACE="Arial" SIZE="3">255</font>的入口,除非你指定了<font FACE="Arial" SIZE="3">DDPCAPS_ALLOW256</font>标志请求所有这些入口都可以被你所用。</p>
  <font FACE="Arial" SIZE="3"><p ALIGN="JUSTIFY">SDK</font>中的<font FACE="Arial" SIZE="3">Ddutil.cpp</font>源文件包含了一些关于操作调色板的唾手可得的应用程序定义的函数(非库函数)。要得到更多的信息,请参阅源文件中的<font
  FACE="Arial" SIZE="3">DDLoadPalette</font>函数。</p>
  </font><hr>
</blockquote>

<blockquote>
  <font FACE="黑体"><b><p><a name="调色板的种类">调色板的种类</a></p>
  </b></font><font SIZE="3"><p align="right"><a href="#目录"><font face="宋体">返回目录</font></a></p>
  </font>
</blockquote>

<blockquote>
  <font FACE="Arial" SIZE="3"><p ALIGN="JUSTIFY">DirectDraw</font><font FACE="宋体"
  SIZE="3">支持</font><font FACE="Arial" SIZE="3">1</font><font FACE="宋体" SIZE="3">位(</font><font
  FACE="Arial" SIZE="3">2</font><font FACE="宋体" SIZE="3">个入口)、</font><font
  FACE="Arial" SIZE="3">2</font><font FACE="宋体" SIZE="3">位(</font><font FACE="Arial"
  SIZE="3">4</font><font FACE="宋体" SIZE="3">个入口)、</font><font FACE="Arial"
  SIZE="3">4</font><font FACE="宋体" SIZE="3">位(</font><font FACE="Arial" SIZE="3">16</font><font
  FACE="宋体" SIZE="3">个入口)、和</font><font FACE="Arial" SIZE="3">8</font><font
  FACE="宋体" SIZE="3">位(</font><font FACE="Arial" SIZE="3">256</font><font
  FACE="宋体" SIZE="3">个入口)的调色板。一个调色板只能依附于符合其像素格式的页面。例如,一个由</font><font
  FACE="Arial" SIZE="3">DDPCAPS_1BIT</font><font FACE="宋体" SIZE="3">标志创建的</font><font
  FACE="Arial" SIZE="3">2</font><font FACE="宋体" SIZE="3">入口(</font><font
  FACE="Arial" SIZE="3">2-entry</font><font FACE="宋体" SIZE="3">)的调色板只能被依附于一个由</font><font
  FACE="Arial" SIZE="3">DDPF_PALETTEINDEXED1</font><font FACE="宋体" SIZE="3">标志创建的</font><font
  FACE="Arial" SIZE="3">1</font><font FACE="宋体" SIZE="3">位(</font><font FACE="Arial"
  SIZE="3">1-bit</font><font FACE="宋体" SIZE="3">)页面。</p>
  <p ALIGN="JUSTIFY">除此之外,你可以创建一个不包含色彩表的调色板,这就是“索引调色板(</font><font
  FACE="Arial" SIZE="3">indexed palettes</font><font FACE="宋体" SIZE="3">)”。一个索引调色板是指:其入口并不包含</font><font
  FACE="Arial" SIZE="3">RGB</font><font FACE="宋体" SIZE="3">色彩值,而是另一个调色板的</font><font
  FACE="Arial" SIZE="3">PALETTEENTRY</font><font FACE="宋体" SIZE="3">结构的索引值。一个索引调色板的色彩表(</font><font
  FACE="Arial" SIZE="3">color table</font><font FACE="宋体" SIZE="3">)是一个</font><font
  FACE="Arial" SIZE="3">2</font><font FACE="宋体" SIZE="3">、</font><font FACE="Arial"
  SIZE="3">4</font><font FACE="宋体" SIZE="3">、</font><font FACE="Arial" SIZE="3">16</font><font
  FACE="宋体" SIZE="3">、</font><font FACE="Arial" SIZE="3">256</font><font FACE="宋体"
  SIZE="3">字节的序列,每一个字节是另一个调色板的索引。</p>
  <p ALIGN="JUSTIFY">要创建一个索引调色板,在调用</font><font FACE="Arial"
  SIZE="3">IDirectDraw2::CreatePalette</font><font FACE="宋体" SIZE="3">时指定</font><font
  FACE="Arial" SIZE="3">DDPCAPS_8BITENTRIES</font><font FACE="宋体" SIZE="3">标志。例如,要创建一个</font><font
  FACE="Arial" SIZE="3">4</font><font FACE="宋体" SIZE="3">位的索引调色板,指定</font><font
  FACE="Arial" SIZE="3">DDPCAPS_4BIT |DDPCAPS_8BITENTRIES</font><font FACE="宋体" SIZE="3">。当你创建一个索引调色板,传递一个指向一系列字节的指针,而不是一个指向</font><font
  FACE="Arial" SIZE="3">PALETTEENTRY</font><font FACE="宋体" SIZE="3">结构的指针。当你使用</font><font
  FACE="Arial" SIZE="3">IDirectDraw2::CreatePalette</font><font FACE="宋体" SIZE="3">时,必须将一个指向字节组的指针转换成</font><font
  FACE="Arial" SIZE="3">LPPALETTEENTRY</font><font FACE="宋体" SIZE="3">类型。</p>
  <p ALIGN="JUSTIFY">注意:在</font><font FACE="Arial" SIZE="3">Blit</font><font
  FACE="宋体" SIZE="3">操作的过程中,</font><font FACE="Arial" SIZE="3">DirectDraw</font><font
  FACE="宋体" SIZE="3">不会解除索引调色板,而使其成为普通调色板。</p>
  </font><hr>
</blockquote>

<blockquote>
  <b><font FACE="黑体"><p><a
  name="对非主页面(Non-Primary Surfaces)设置调色板">对非主页面(</font><font
  FACE="Arial">Non-Primary Surfaces</font><font FACE="黑体">)设置调色板</a></p>
  </font></b><font SIZE="3"><p align="right"><a href="#目录"><font face="宋体">返回目录</font></a></p>
  </font>
</blockquote>

<blockquote>
  <font FACE="宋体" SIZE="3"><p ALIGN="JUSTIFY">调色板可以依属于任何一种基于调色板的页面(主页面,后台缓存,离屏平面,或材质图)。只有那些被依属到主页面(<font
  FACE="Arial" SIZE="3">primary surface</font>)的调色板才能对系统调色板(<font
  FACE="Arial" SIZE="3">system palette</font>)产生影响。注意到这一点是很重要的:<font
  FACE="Arial" SIZE="3">DirectDraw</font>位图映射决不会导致色彩转换;任何依属于源或目标页面的调色板在位图映射中被忽略。此外,<font
  FACE="Arial" SIZE="3">IDirectDrawSurface3::GetDC</font>函数同样忽略被选入页面的任何<font
  FACE="Arial" SIZE="3">DirectDrawPalette</font>对象。</p>
  <p ALIGN="JUSTIFY">非主页面调色板可以被应用程序或<font FACE="Arial"
  SIZE="3">Direct3D</font>(或其它<font FACE="Arial" SIZE="3">3D</font>渲染引擎)所使用。</p>
  </font><hr>
</blockquote>

<blockquote>
  <font FACE="黑体"><b><p><a name="共享调色板">共享调色板</a></p>
  </b></font><font SIZE="3"><p align="right"><a href="#目录"><font face="宋体">返回目录</font></a></p>
  </font>
</blockquote>

<blockquote>
  <font FACE="宋体" SIZE="3"><p ALIGN="JUSTIFY">调色板可以被多个页面所共享。同一个调色板可以设置给一个换页链的前台缓存(<font
  FACE="Arial" SIZE="3">front buffer</font>)和后台缓存(<font FACE="Arial" SIZE="3">back 
  buffer</font>),或在多个材质页面中共享。当应用程序调用<font
  FACE="Arial" SIZE="3">IDirectDrawSurface3::SetPalette</font>使一个调色板依属于一个页面,页面将递增该调色板的引用记录(<font
  FACE="Arial" SIZE="3">reference count</font>)。当页面的引用记录达到<font
  FACE="Arial" SIZE="3">0</font>时,页面将递减依属于它的该调色板的引用记录。除此之外,如果通过<font
  FACE="Arial" SIZE="3">IDirectDrawSurface3::SetPalette</font>使调色板脱离页面,则该调色板的引用记录将减<font
  FACE="Arial" SIZE="3">1</font>。</p>
  <p ALIGN="JUSTIFY">注意:如果对同一页面反复调用<font FACE="Arial" SIZE="3">IDirectDrawSurface3::SetPalette</font>以脱离同一调色板,则该调色板的引用记录只会递减一次。后来的调用不会影响调色板的引用记录。</p>
  </font><hr>
</blockquote>

<blockquote>
  <font FACE="黑体"><b><p><a name="调色板动画">调色板动画</a></b></font></p>
  <font SIZE="3"><p align="right"><a href="#目录"><font face="宋体">返回目录</font></a></p>
  </font>
</blockquote>

<blockquote>
  <font FACE="宋体" SIZE="3"><p ALIGN="JUSTIFY">调色板动画指的是:用修改隶属于一个页面的调色板的方法来实现显示页面色彩的变化,而不是通过实际修改页面的内容来实现页面的变化。为了这个目的,调色板动画给你提供了一个不需要改变页面内容,改变页面所显示的图象的途径,而只会产生很少的消耗。</p>
  <p ALIGN="JUSTIFY">有两种方法可以直接实现调色板动画:</p>
  <ol>
    <li>修改调色板的入口</li>
    <li>在两个调色板之间切换</li>
  </ol>
  <p ALIGN="JUSTIFY">你可以使用以下两种方法之一来实现简单的调色板动画。前一个方法:改变为实现动画所需要改变颜色的调色板入口。这种方法,你可以通过调用</font><font
  FACE="Arial" SIZE="3">IDirectDrawPalette::SetEntries</font><font FACE="宋体" SIZE="3">来实现调色板的重置。第二个方法需要两个</font><font
  FACE="Arial" SIZE="3">DirectDrawPalette</font><font FACE="宋体" SIZE="3">对象。应用程序通过轮流将两个</font><font
  FACE="Arial" SIZE="3">DirectDrawPalette</font><font FACE="宋体" SIZE="3">与</font><font
  FACE="Arial" SIZE="3">DirectDrawSurface</font><font FACE="宋体" SIZE="3">对象相依属,来实现动画。这种方法,你可以通过调用</font><font
  FACE="Arial" SIZE="3">IDirectDrawSurface3::SetPalette</font><font FACE="宋体" SIZE="3">来实现。</p>
  <p ALIGN="JUSTIFY">没有一种技术会使硬件产生激烈反应,所以,你可以随心所欲的选择适合于你的程序的那种。</font></p>
</blockquote>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -