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

📄 ddbase.htm

📁 DirecetX中文手册
💻 HTM
📖 第 1 页 / 共 4 页
字号:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>DirectDraw基本图形概念</title>
<meta name="GENERATOR" content="Microsoft FrontPage 3.0">
</head>

<body background="paper.GIF">
<b><font FACE="Arial" SIZE="4">

<p ALIGN="CENTER"></font><a name="目录"><font color="#FF8000"><font FACE="Arial"
size="6">DirectDraw</font><font FACE="宋体" size="6">基本图形概念</font></font></a></b><font
FACE="宋体" size="5"></p>
</font>

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

<blockquote>
  <p ALIGN="JUSTIFY"></font><font face="宋体"><span style="font-size: 12">&nbsp;&nbsp;&nbsp; 
  在上一章里,我们尝试了一个非常简单的DirectDraw应用程序,可以看到,DirectDraw编程对一个C或C++程序员来说并不是陌生和难以接近的。在这一章里,我们将介绍Directdraw编程中所经常用到的图形方面的知识,在深入进行DirectDraw编程之前,领悟这些最基本的图形概念是非常必要的。</span></font></p>
  <table border="0" width="83%" height="196" cellspacing="4" cellpadding="4">
    <tr>
      <td width="50%" height="168" valign="top"><font face="宋体"><span
      style="font-family: 宋体">1、<a href="#1、像素(Pixel)和分辨率(Resolution)">像素和分辨率</a></span></font><p><font
      face="宋体"><span style="font-family: 宋体">2、<a href="#2、RGB色彩">RGB色彩</a></span></font></p>
      <p><font face="宋体"><span style="font-family: 宋体">3、<a
      href="#3、设备无关位图(DIB)">设备无关位图(DIB)</a></span></font></p>
      <p><font face="宋体"><span style="font-family: 宋体">4、<a
      href="#4、位深度(Bit depth)">位深度(Bit depth)</a></span></font></p>
      <p><font face="宋体"><span style="font-family: 宋体">5、<a
      href="#5、抖动处理(Dithering)">抖动处理(Dithering)</a></span></font></p>
      <p><font face="宋体"><span style="font-family: 宋体">6、<a
      href="#6、调色板(Palette)">调色板(Palette)</a></span></font></p>
      <p><font face="宋体"><span style="font-family: 宋体">7、<a
      href="#7、GDI与DirectDraw">GDI与DirectDraw</a></span></font></td>
      <td width="50%" height="168" valign="top"><font face="宋体"><span
      style="font-family: 宋体">8、<a href="#8、位块传送(Blit)">位块传送(Blit)</a></span></font><p><font
      face="宋体"><span style="font-family: 宋体">9、<a
      href="#9、翻页(Page flipping)">翻页(Page flipping)</a></span></font></p>
      <p><font face="宋体"><span style="font-family: 宋体">10、<a
      href="#10、矩形(Rectangle)">矩形(Rectangle)</a></span></font></p>
      <p><font face="宋体"><span style="font-family: 宋体">11、<a
      href="#11、精灵动画(Sprite animation)">精灵动画(Sprite animation)</a></span></font></p>
      <p><font face="宋体"><span style="font-family: 宋体">12、<a
      href="#12、关键色(Color Key)">关键色(Color Key)</a></span></font></p>
      <p><font face="宋体"><span style="font-family: 宋体">13、<a
      href="#13、补丁(Patching)">补丁(Patching)</a></span></font></p>
      <p><font face="宋体"><span style="font-family: 宋体">14、<a
      href="#14、范围检查(Bounds Checking)与碰撞检测(Hit Detection)">范围检查与碰撞检测</a></span></font></td>
    </tr>
  </table>
  <hr>
</blockquote>

<blockquote>
  <b><p><a name="1、像素(Pixel)和分辨率(Resolution)">1、像素<font FACE="Arial">(Pixel)</font><font
  face="宋体">和分辨率(</font><font FACE="Arial">Resolution)</a></p>
  </font></b><p align="right"><font size="3"><a href="#目录">返回目录</a></font><font
  FACE="宋体" SIZE="3"></p>
</blockquote>

<blockquote>
  <p ALIGN="JUSTIFY">首先,让我们从电脑显示器屏幕上的基本单位棗像素说起。对用户来说,像素指的是显示器在某种分辨率状态下所能表达图象的最小单位。你可以把它简单的理解为一种类似于马赛克的东西。像素的大小与你当前的显示分辨率有关,现在所有的<font
  FACE="Arial" SIZE="3">SVGA</font>显示器都支持多种分辨率,比如通常所说的<font
  FACE="Arial" SIZE="3">640x480</font>、<font FACE="Arial" SIZE="3">800x600</font>等。许多人错误的将像素的大小与显示器的点间距(<font
  FACE="Arial" SIZE="3">Dot Pinch</font>)混淆了,其实它们指的不是同一个东西。当你用放大镜观察显示器屏幕时,你会发现图象实际是由许许多多红,绿,蓝整齐排列的小点组成,你可能会认为这就是像素,那么你就错了。这实际上是显示器光栅的一个扫描点,它是荧光屏后部的三束电子枪发射电子透过一层致密的网打到荧屏反面而发出的荧光,人们常说的<font
  FACE="Arial" SIZE="3">0.28</font>的彩显意即:屏幕上相临两个扫描点的平均间距为<font
  FACE="Arial" SIZE="3">0.28</font>毫米。一个像素是由若干个这样的扫描点组成的。专业的说,在某种分辨率状态下,显示器的水平(垂直)像素的个数,实际上等于一次水平(垂直)扫描期间,电子束的通短强弱状态能够发生变化的次数。一台彩显所能达到的最大分辨率受到这台彩显的尺寸和点距的限制。</p>
</blockquote>

<blockquote>
  <p ALIGN="JUSTIFY">显然,显示器型号越大,点间距越小,则它所能达到的分辨率就越高,那么,它所显示的图象就越清晰,表现得越细腻。</p>
  <hr>
</blockquote>

<blockquote>
  <b><p></font><a name="2、RGB色彩"><font FACE="Arial" SIZE="3">2</font><font size="3">、</font><font
  FACE="Arial" SIZE="3">RGB</font><font FACE="宋体" SIZE="3"><font FACE="宋体">色彩</a></p>
  </font></b><p align="right"><font size="3"><a href="#目录">返回目录</a></font></p>
</blockquote>

<blockquote>
  <p ALIGN="JUSTIFY">现实生活中,我们所能分辨的所有颜色都能用三原色:红、绿、蓝合成出来,称为<font
  FACE="Arial" SIZE="3">RGB</font>色彩模式。用<font FACE="Arial" SIZE="3">RGB</font>方式合成颜色主要用于发光设备,如计算机显示器。通过分别调节红,绿,蓝三束电子枪的强度,就可产生一个广泛的色彩范围。由于色彩的产生来源于<font
  FACE="Arial" SIZE="3">RGB</font>三种色彩光强度的叠加,所以,这种方法被称为彩色叠加。</p>
</blockquote>

<blockquote>
  <p ALIGN="JUSTIFY">值得一提但与我们的<font FACE="Arial" SIZE="3">DirectDraw</font>编程基本上没有什么关系的另一种色彩表示模式是<font
  FACE="Arial" SIZE="3">CMYK</font>色彩模式,代表青,粉,黄三种可减基色,加上黑色作对比,常用于打印,感光材料,胶片等。每种基本色从照射到打印页的白光中吸取某些色彩,由于<font
  FACE="Arial" SIZE="3">CMYK</font>方式通过从白光中吸取特定的色彩,所以被称为彩色削减。此外,还有<font
  FACE="Arial" SIZE="3">HSI</font>(也称<font FACE="Arial" SIZE="3">HSL)</font>色彩模式,它代表<font
  FACE="Arial" SIZE="3">Hue </font>,<font size="3"> </font><font FACE="Arial" SIZE="3">Saturation 
  </font>和<font size="3"> </font><font FACE="Arial" SIZE="3">Intensity </font>。<font
  FACE="Arial" SIZE="3">Hue </font>是我们所认为的色调,如红橙黄绿青蓝紫等,<font
  FACE="Arial" SIZE="3">Saturation</font>描述该色调颜色的饱和度,<font
  FACE="Arial" SIZE="3">Intensity </font>描述亮度。</p>
</blockquote>

<blockquote>
  <font FACE="Arial" SIZE="3"><p ALIGN="JUSTIFY">RGB </font>颜色方式对于显示器来说是唯一适用的彩色混合方法,而<font
  FACE="Arial" SIZE="3">CMYK</font>则是适用于打印和印刷的彩色混合方法,<font
  FACE="Arial" SIZE="3">HSI </font>则是一个很直观的定义彩色的方法。现在的许多图形软件中都同时具有这三种定义颜色方法的应用。但是,不论用那种方法给颜色取值,最终都必须转化为<font
  FACE="Arial" SIZE="3">RGB</font>方式才能为显示器所认识接收并显示出来。</p>
</blockquote>
</font>

<blockquote>
  <font FACE="宋体" SIZE="3"><p ALIGN="JUSTIFY">在几乎所有的编程中,当然也包括<font
  FACE="Arial" SIZE="3">DirectDraw</font>,都是采用标准的<font FACE="Arial" SIZE="3">24</font>位<font
  FACE="Arial" SIZE="3">RGB</font>模式定义一个颜色,用三个从<font FACE="Arial"
  SIZE="3">0</font>到<font FACE="Arial" SIZE="3">255</font>的数值来分别代表<font
  FACE="Arial" SIZE="3">R</font>、<font FACE="Arial" SIZE="3">G</font>、<font FACE="Arial"
  SIZE="3">B</font>三个分量,每个分量都有<font FACE="Arial" SIZE="3">256</font>种亮度级别。当三种元素全被置为<font
  FACE="Arial" SIZE="3">0</font>,像素显示黑,通常表示为<font FACE="Arial"
  SIZE="3">RGB(0</font>,<font FACE="Arial" SIZE="3">0</font>,<font FACE="Arial" SIZE="3">0)</font>;当全部置为<font
  FACE="Arial" SIZE="3">255</font>,像素显示为白,表示为<font FACE="Arial"
  SIZE="3">RGB(255</font>,<font FACE="Arial" SIZE="3">255</font>,<font FACE="Arial"
  SIZE="3">255)</font>。</p>
  <hr>
  <b><p><a name="3、设备无关位图(DIB)">3、设备无关位图(<font
  FACE="Arial">DIB</font><font FACE="宋体">)</font></a></b></p>
  <p align="right"></font><font size="3"><a href="#目录">返回目录</a></font><font
  FACE="宋体" SIZE="3"></p>
  </font>
</blockquote>

<blockquote>
  <font FACE="宋体" SIZE="3"><p ALIGN="JUSTIFY">位图图象(也称点阵图象)准确的说是什么呢?它们是数据元素的集合,这些数据元素决定在了在图片的某个具体位置是什么颜色。这就好比我们用许许多多的马赛克来拼图案一样,每个马赛克虽然只有一种颜色,但你看到的只是整个美丽的图案,而不是某一个马赛克。当图象显示在显示器屏幕上时,正如前面提到的那样,这一个个的马赛克就是像素。</font><font
  FACE="Arial" SIZE="3"></p>
  </font>
</blockquote>

<blockquote>
  <font FACE="Arial" SIZE="3"><p ALIGN="JUSTIFY">Windows</font><font FACE="宋体" SIZE="3">中,当然还包括</font><font
  FACE="Arial" SIZE="3">DirectX</font><font FACE="宋体" SIZE="3">,都使用设备无关位图</font><font
  FACE="Arial" SIZE="3">DIB</font><font FACE="宋体" SIZE="3">(</font><font FACE="Arial"
  SIZE="3">Device-Independent Bitmap</font><font FACE="宋体" SIZE="3">)作为其最基本的图象文件格式。</p>
  </font>
</blockquote>

<blockquote>
  <font FACE="宋体" SIZE="3"><ul>
    <li><font color="#FF0000">之所以称之为设备无关位图(DIB),其实是为了与设备相关位图(DDB:Device 
      dependent bitmap)相区别。由于只有Windows 3.0以前的版本才广泛使用设备相关位图DDB,Windows 
      95和Windows NT及以后的版本使用的都是设备无关位图DIB,所以,“设备无关位图”这个名称在当前已没有其现实的含义。在大多数情况下,我们将其简称为位图(Bitmap)。</font></li>
  </ul>
  </font>
</blockquote>

<blockquote>
  <font FACE="宋体" SIZE="3"><p ALIGN="JUSTIFY">从本质上说,</font><font
  FACE="Arial" SIZE="3">DIB</font><font FACE="宋体" SIZE="3">是一个包含了图象的各种信息的文件,包括图象的尺寸,使用的颜色个数及其颜色值,还有每个像素的颜色数据等。此外,一个</font><font
  FACE="Arial" SIZE="3">DIB</font><font FACE="宋体" SIZE="3">中还包含了一些极少使用的参数,象文件压缩类型、重要颜色,还有图象的物理维数等。</font><font
  FACE="Arial" SIZE="3">DIB</font><font FACE="宋体" SIZE="3">文件通常具有“</font><font
  FACE="Arial" SIZE="3">.bmp</font><font FACE="宋体" SIZE="3">”扩展名,偶尔也会将“</font><font
  FACE="Arial" SIZE="3">.dib</font><font FACE="宋体" SIZE="3">”作为其扩展名。</font><font
  FACE="Arial" SIZE="3"></p>
  </font>
</blockquote>

<blockquote>
  <font FACE="Arial" SIZE="3"><p ALIGN="JUSTIFY">Windows</font><font FACE="宋体" SIZE="3">对</font><font
  FACE="Arial" SIZE="3">DIB</font><font FACE="宋体" SIZE="3">位图有规定的格式,在我们学习了位深度和调色板的概念之后,对</font><font
  FACE="Arial" SIZE="3">DIB</font><font FACE="宋体" SIZE="3">格式再做详细的解释。</p>
  </font>
</blockquote>

<blockquote>
  <font FACE="宋体" SIZE="3"><ul>
    <li><font color="#FF0000">与位图格式相对的是矢量格式,由于它是用形状和相互关系来描述图象,WMF文件就是一种典型的矢量图,它的特点是具有极大的灵活性,可以任意缩放不失真,且存储空间相对较小,但矢量图由于其描述图象的方式与位图完全不同,不适用于图象处理的领域。在以后的DirectDraw编程中,我们所指的图象特指位图图象。</font></li>
  </ul>
  <hr>
  </font>
</blockquote>

<blockquote>
  <b><font face="宋体"><font FACE="宋体" SIZE="3"><p></font><a
  name="4、位深度(Bit depth)"><font size="3">4<font face="宋体">、</font></font></font><font
  FACE="宋体" SIZE="3">位深度(<font FACE="Arial">Bit depth</font><font face="宋体">)</a></p>
  </font></b><p align="right"></font><font size="3"><a href="#目录">返回目录</a></font><font
  FACE="宋体" SIZE="3"></p>

⌨️ 快捷键说明

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