📄 displaymode.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><a name="目录"><font face="宋体" size="6" color="#FF8000">显示模式</font></a></b></p>
<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 style="margin-top: -8px">
<blockquote>
<font FACE="宋体" SIZE="3"><ol>
<li><a href="#关于显示模式">关于显示模式</a></li>
<li><a href="#测定支持的显示模式">测定支持的显示模式</a></li>
<li><a href="#设置显示模式">设置显示模式</a></li>
<li><a href="#还原显示模式">恢复显示模式</a></li>
<font FACE="Arial" SIZE="3">
<li><a href="#ModeX与Mode 13显示模式">Mode X</font>和<font FACE="Arial" SIZE="3">Mode
13</font>显示模式</a></li>
<li><a href="#对高分辨率和真彩色的支持">对高分辨率和真彩色的支持</a></li>
</ol>
</font>
</blockquote>
<font FACE="宋体" SIZE="3">
<hr>
<blockquote>
<b><font FACE="黑体"><p></font></font><font SIZE="3"><a name="关于显示模式"><font
face="宋体">关于显示模式</font></a></p>
</b><p align="right"><a href="#目录"><font face="宋体">返回目录</font></a></p>
<p ALIGN="JUSTIFY"></font><font FACE="宋体" SIZE="3">显示模式指的是显示器的当前设置,描述了显示器的分辨率和位深度,这个信息通常是由显示硬件从主页面传递给显示器的。显示模式是由三个特征定义的:宽、高、位深度。例如,大多数的显示器可以显示宽为<font
FACE="Arial" SIZE="3">640</font>像素、高为<font FACE="Arial" SIZE="3">480</font>像素的图象,每一个像素的位深度是<font
FACE="Arial" SIZE="3">8</font>。通常我们把这个显示模式称作<font FACE="Arial"
SIZE="3">640x480x8</font>。随着显示模式的尺寸和位深度的增加,它所需要的视频<font
FACE="Arial" SIZE="3">RAM</font>也随之增加。</p>
<p ALIGN="JUSTIFY">有两种显示模式:调色板式和非调色板式。对于调色板式显示模式来说,每一个像素的颜色值是以一个相关调色板的索引值来代表。显示模式的位深度决定了调色板中可容纳的颜色数量。举例来说,在<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">256</font>个颜色入口。</p>
<p ALIGN="JUSTIFY">非调色板式显示模式,就象它的名称所表示的那样,不需要使用调色板。在这种显示模式下,像素的位深度为<font
FACE="Arial" SIZE="3">16</font>、<font FACE="Arial" SIZE="3">24</font>或<font
FACE="Arial" SIZE="3">32</font>,每个像素分别占用<font FACE="Arial" SIZE="3">2</font>字节、<font
FACE="Arial" SIZE="3">3</font>字节或<font FACE="Arial" SIZE="3">4</font>字节,用来描述像素的真实颜色。</p>
<p ALIGN="JUSTIFY">主页面、以及在换页链中的所有页面必须符合显示模式的尺寸,位深度和像素格式(请参阅“像素格式”)。</p>
<hr>
<b><font FACE="黑体"><p></font><a name="测定支持的显示模式">测定支持的显示模式</a><font
FACE="黑体"></p>
</font></b><font SIZE="3"><p align="right"><a href="#目录"><font face="宋体">返回目录</font></a></p>
</font><p ALIGN="JUSTIFY">因为显示硬件(包括显示卡和显示器)的不同,不是所有的显示设备都支持所有的显示模式。要测定某系统所支持的显示模式,应该调用<font
FACE="Arial" SIZE="3">IDirectDraw2::EnumDisplayModes</font>函数。设置正确的参数和标志符,<font
FACE="Arial" SIZE="3">IDirectDraw2::EnumDisplayModes</font>可以列举出该系统所支持的所有的显示模式,或判断是否支持用户所指定的显示模式。该函数的第一个参数,<font
FACE="Arial" SIZE="3">dwFlags</font>,控制该函数的额外选项,在大多数情况下,你应该设置<font
FACE="Arial" SIZE="3">dwFlags</font>为<font FACE="Arial" SIZE="3">0</font>以表明忽略额外的选项。第二个参数,<font
FACE="Arial" SIZE="3">lpDDSurfaceDesc</font>,是一个<font FACE="Arial" SIZE="3">DDSURFACEDESC</font>结构的地址,包含了要被测定的显示模式信息,通常,该参数被设为<font
FACE="Arial" SIZE="3">NULL</font>,以列举出该系统所支持的所有显示模式。第三个参数,<font
FACE="Arial" SIZE="3">lpContext</font>,是你想让<font FACE="Arial" SIZE="3">DirectDraw</font>传递给其回调函数的一个指针,如果在回调函数中不需要任何数据,给该参数值为<font
FACE="Arial" SIZE="3">NULL</font>。最后一个参数,<font FACE="Arial" SIZE="3">lpEnumModesCallback</font>,一个应用程序定义的回调函数的地址,在<font
FACE="Arial" SIZE="3">DirectDraw</font>每列举出一个显示模式的时候,该回调函数将被调用。</p>
<p ALIGN="JUSTIFY">在调用<font FACE="Arial" SIZE="3">IDirectDraw2::EnumDisplayModes</font>时所提供的回调函数必须符合<font
FACE="Arial" SIZE="3">EnumModesCallback</font>函数的原型。每当找到一个硬件所支持的显示模式的时候,<font
FACE="Arial" SIZE="3">DirectDraw</font>调用该回调函数,并且传递了两个参数。第一个参数是一个<font
FACE="Arial" SIZE="3">DDSURFACEDESC</font>结构的地址,包含了一个支持的显示模式的描述。第二个参数是一个应用程序定义的数据的地址,是在调用<font
FACE="Arial" SIZE="3">IDirectDraw2::EnumDisplayModes</font>时所指定的第三个参数。</p>
<p ALIGN="JUSTIFY">检查<font FACE="Arial" SIZE="3">DDSURFACEDESC</font>结构中的值以获得它所描述的显示模式,关键的成员是<font
FACE="Arial" SIZE="3">dwWidth</font>、<font FACE="Arial" SIZE="3">dwHeight</font>、和<font
FACE="Arial" SIZE="3">ddpfPixelFormat</font>。<font FACE="Arial" SIZE="3">dwWidth</font>和<font
FACE="Arial" SIZE="3">dwHeight</font>成员代表了显示模式的长和宽,<font
FACE="Arial" SIZE="3">ddpfPixelFormat</font>成员是一个<font FACE="Arial" SIZE="3">DDPIXELFORMAT</font>结构的地址,它包含了显示模式的位深度信息。</p>
<font FACE="Arial" SIZE="3"><p ALIGN="JUSTIFY">DDPIXELFORMAT</font>结构不仅包含了显示模式的位深度,还可以告诉你该显示模式是否使用调色板,以及像素格式。如果<font
FACE="Arial" SIZE="3">dwFlags</font>成员包含了<font FACE="Arial" SIZE="3">PALETTEINDEXED1</font>、<font
FACE="Arial" SIZE="3">DDPF_PALETTEINDEXED2</font>、<font FACE="Arial" SIZE="3">DDPF_PALETTEINDEXED4</font>、或<font
FACE="Arial" SIZE="3">DDPF_PALETTEINDEXED8</font>标志,显示模式的位深度为<font
FACE="Arial" SIZE="3">1</font>、<font FACE="Arial" SIZE="3">2</font>、<font FACE="Arial"
SIZE="3">4</font>或<font FACE="Arial" SIZE="3">8</font>,并且每个像素是一个相关调色板的索引。如果<font
FACE="Arial" SIZE="3">dwFlags</font>成员包含了<font FACE="Arial" SIZE="3">DDPF_RGB</font>标志,那么该显示模式是非调色板式的,并且它的位深度由<font
FACE="Arial" SIZE="3">DDPIXELFORMAT </font>结构中的<font FACE="Arial" SIZE="3">dwRGBBitCount</font>成员所提供。</p>
<hr>
<b><font FACE="黑体"><p></font><a name="设置显示模式">设置显示模式</a><font
FACE="黑体"></p>
</font></b><font SIZE="3"><p align="right"><a href="#目录"><font face="宋体">返回目录</font></a></p>
</font><p ALIGN="JUSTIFY">你可以用<font FACE="Arial" SIZE="3">IDirectDraw2::SetDisplayMode</font>来设置显示器的显示模式。该函数的前四个参数用来描述要设置的显示模式的尺寸、位深度以及显示器的刷新率。函数的第五个参数是用来指定额外的选项,目前,唯一可用的标志是<font
FACE="Arial" SIZE="3">DDSDM_STANDARDVGAMODE</font>,它将使显示模式被设为<font
FACE="Arial" SIZE="3">Mode 13</font>,而不是<font FACE="Arial" SIZE="3">Mode X
320x200x8</font>。如果你要设置另一种分辨率,位深度或<font FACE="Arial"
SIZE="3">Mode X</font>模式,不要使用这个参数,并且将其设为<font
FACE="Arial" SIZE="3">0</p>
</font><p ALIGN="JUSTIFY">尽管你可以指定所需要的显示模式的位深度,但是你不能指定显示硬件的像素格式。要测定显示硬件用于该位深度的<font
FACE="Arial" SIZE="3">RGB</font>位掩码,在设置好显示模式之后,调用<font
FACE="Arial" SIZE="3">IDirectDraw2::GetDisplayMode</font>。如果当前的显示模式不是基于调色板的,你可以从<font
FACE="Arial" SIZE="3">dwRBitMask</font>、<font FACE="Arial" SIZE="3">dwGBitMask</font>和<font
FACE="Arial" SIZE="3">dwBBitMask</font>中获得掩码值。</p>
<p ALIGN="JUSTIFY">要正确的测定<font FACE="Arial" SIZE="3">red</font>、<font
FACE="Arial" SIZE="3">green</font>和<font FACE="Arial" SIZE="3">blue</font>的所在的位,请参阅“<font
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -