📄 bcb_g17.htm
字号:
<html>
<head>
<title>DrawDib函数组的使用</title>
<meta http-equiv="目录类型" content="文本/html; 字符集=gb2312">
</head>
<body bgcolor="#FFFFFF">
<table width="100%" border="0" height="285">
<tr>
<td height="35">
<div align="center" class="p14"><font color="#000000">DrawDib函数组的使用</font></div>
</td>
</tr>
<tr valign="top">
<td>
<p align="CENTER"><font lang="ZH-CN" size="3" face="黑体">作者:罗隽</font></p>
<p> <font size="3"></font><font face="宋体" size="3"> Microsoft</font><font face="宋体"><font lang="ZH-CN" size="3">的针对与设备无关位图(</font><font size="3">DIB</font><font lang="ZH-CN" size="3">位图),在其</font><font size="3">WIN32
SDK</font><font lang="ZH-CN" size="3">的</font><font size="3">Multimedia</font><font lang="ZH-CN" size="3">中提供了一组绘制</font><font size="3">DIB</font><font lang="ZH-CN" size="3">位图的高性能函数组──</font><font size="3">DrawDib</font><font lang="ZH-CN" size="3">函数组。</font><font size="3">DrawDib</font><font lang="ZH-CN" size="3">函数组是一组不依赖于图形设备接口(</font><font size="3">GDI</font><font lang="ZH-CN" size="3">)函数,而直接操作显存的函数组。它们支持</font><font size="3">8</font><font lang="ZH-CN" size="3">位、</font><font size="3">16</font><font lang="ZH-CN" size="3">位、</font><font size="3">24</font><font lang="ZH-CN" size="3">位和</font><font size="3">32</font><font lang="ZH-CN" size="3">位图象深度的</font><font size="3">DIB</font><font lang="ZH-CN" size="3">。总的来说,</font><font size="3">DrawDib</font><font lang="ZH-CN" size="3">函数组类似于</font><font size="3">StretchDIBits</font><font lang="ZH-CN" size="3">函数,它们都提供了将图象拉伸和抖动的功能,然而,</font><font size="3">DrawDib</font><font lang="ZH-CN" size="3">函数组还支持图象的解压、数据流以及更多的显示适配器。在某些情况下,</font><font size="3">DrawDib</font><font lang="ZH-CN" size="3">函数组还具有更大的优越性。但是,在某些场合下,</font><font size="3">DrawDib</font><font lang="ZH-CN" size="3">函数组却不能取代</font><font size="3">StretchDIBits</font><font lang="ZH-CN" size="3">函数。下面就</font><font size="3">DrawDib</font><font lang="ZH-CN" size="3">函数组和</font><font size="3">StretchDIBits</font></font><font lang="ZH-CN" size="3" face="宋体">函数使用的场合加以区别和说明:
</font>
<ul>
<li> <font lang="ZH-CN" size="3"></font><font lang="ZH-CN" size="3" face="宋体">颜色信息表格式。</font><font face="宋体"><font size="3">DrawDib</font><font lang="ZH-CN" size="3">函数组只支持颜色信息表格式为</font><font size="3">DIB_RGB_COLORS</font><font lang="ZH-CN" size="3">格式的图象,如果要显示以</font><font size="3">DIB_PAL_COLORS</font><font lang="ZH-CN" size="3">或</font><font size="3">DIB_PAL_INDICES</font><font lang="ZH-CN" size="3">格式的图象,则必须用</font><font size="3">StretchDIBits</font></font><font lang="ZH-CN" size="3" face="宋体">函数。</font></li>
<li> <font lang="ZH-CN" size="3"></font><font lang="ZH-CN" size="3" face="宋体">光栅操作模式。</font><font face="宋体"><font size="3">DrawDib</font><font lang="ZH-CN" size="3">函数组只能使用</font><font size="3">SRCCOPY</font><font lang="ZH-CN" size="3">光栅操作模式,如果要求不仅仅使用</font><font size="3">SRCCOPY</font><font lang="ZH-CN" size="3">模式的话,只能用</font><font size="3">StretchDIBits</font><font lang="ZH-CN" size="3">函数。同样地,如果要使用其他光栅操作,例如</font><font size="3">XOR</font><font lang="ZH-CN" size="3">,只能用</font><font size="3">StretchDIBits</font></font><font lang="ZH-CN" size="3" face="宋体">函数。</font></li>
<li> <font lang="ZH-CN" size="3"></font><font lang="ZH-CN" size="3" face="宋体">视频及动画回放的质量。</font><font face="宋体"><font size="3">DrawDib</font><font lang="ZH-CN" size="3">函数组支持数据流应用,诸如视频片和动画序列,它比</font><font size="3">StretchDIBits</font></font><font lang="ZH-CN" size="3" face="宋体">函数提供了更高的图象质量以及对回放过程的改进。</font></li>
<li> <font lang="ZH-CN" size="3"></font><font lang="ZH-CN" size="3" face="宋体">显示适配器。</font><font face="宋体"><font size="3">DrawDib</font><font lang="ZH-CN" size="3">函数组比</font><font size="3">StretchDIBits</font><font lang="ZH-CN" size="3">函数支持更多的显示适配器。</font><font size="3">DrawDib</font><font lang="ZH-CN" size="3">函数组支持使用</font><font size="3">4</font><font lang="ZH-CN" size="3">位图象深度提供</font><font size="3">16</font><font lang="ZH-CN" size="3">色调色板的</font><font size="3">VGA</font><font lang="ZH-CN" size="3">适配器,使用</font><font size="3">8</font><font lang="ZH-CN" size="3">位图象深度提供</font><font size="3">256</font><font lang="ZH-CN" size="3">色调色板的</font><font size="3">SVGA</font><font lang="ZH-CN" size="3">适配器和使用</font><font size="3">16</font><font lang="ZH-CN" size="3">位、</font><font size="3">24</font><font lang="ZH-CN" size="3">位和</font><font size="3">32</font><font lang="ZH-CN" size="3">位图象深度提供成千上万种颜色的真彩色适配器。</font><font size="3">DrawDib</font><font lang="ZH-CN" size="3">函数组还使用了受限制的潜在能力提高了图象在显示适配器上的速度和质量。例如,当使用</font><font size="3">8</font><font lang="ZH-CN" size="3">位的显示适配器时,</font><font size="3">DrawDib</font><font lang="ZH-CN" size="3">函数组有效地将真彩色图象抖动为</font><font size="3">256</font><font lang="ZH-CN" size="3">色;同样的,使用</font><font size="3">4</font><font lang="ZH-CN" size="3">位的显示适配器时,它们也将</font><font size="3">8</font><font lang="ZH-CN" size="3">位深度的图象抖动成</font><font size="3">4</font></font><font lang="ZH-CN" size="3" face="宋体">位。</font></li>
<li> <font lang="ZH-CN" size="3"></font><font lang="ZH-CN" size="3" face="宋体">图象拉伸。正如</font><font face="宋体"><font size="3">StretchDIBits</font><font lang="ZH-CN" size="3">一样,</font><font size="3">DrawDib</font><font lang="ZH-CN" size="3">函数组用源矩形和目的矩形来控制一个图象显示的部分。可以通过改变源矩形和目的矩形的位置和大小来裁剪一幅图象不需要的部分和拉伸某部分。如果显示驱动不支持图象拉伸,那么</font><font size="3">DrawDib</font><font lang="ZH-CN" size="3">函数组提供了比</font><font size="3">StretchDIBits</font></font><font lang="ZH-CN" size="3" face="宋体">函数更有效的拉伸能力。</font></li>
<li> <font lang="ZH-CN" size="3"></font><font lang="ZH-CN" size="3" face="宋体">压缩图象。</font><font face="宋体"><font size="3">DrawDib</font><font lang="ZH-CN" size="3">函数组支持好几种压缩和解压方法,其中包括游程编码,</font><font size="3">JPEG,Cinepak,411YUV</font><font lang="ZH-CN" size="3">和</font><font size="3">Indeo</font><font size="2">™</font></font><font lang="ZH-CN" size="3" face="宋体">。</font></li>
</ul>
<p align="JUSTIFY"><font lang="ZH-CN"> </font></p>
<p align="JUSTIFY"><font face="宋体">DrawDib</font><font lang="ZH-CN" face="宋体">的操作</font></p>
<p align="JUSTIFY"> <font lang="ZH-CN" size="3"></font><font face="宋体" lang="ZH-CN" size="3">
通过使用</font><font face="宋体"><font size="3">DrawDibOpen</font><font lang="ZH-CN" size="3">函数初始化</font><font size="3">DrawDib</font><font lang="ZH-CN" size="3">函数组。</font><font size="3">DrawDibOpen</font><font lang="ZH-CN" size="3">负责装载动态连接库</font><font size="3">(DLL)</font><font lang="ZH-CN" size="3">,申请内存资源,</font><font size="3">DrawDib</font><font lang="ZH-CN" size="3">设备环境</font><font size="3">(DC)</font><font lang="ZH-CN" size="3">,并且维持初始化相关的设备环境计数。</font><font size="3">DrawDibOpen</font><font lang="ZH-CN" size="3">同时返回一个其它</font><font size="3">DrawDib</font><font lang="ZH-CN" size="3">函数所需要使用的新的</font><font size="3">DC</font></font><font face="宋体" lang="ZH-CN" size="3">句柄。</font></p>
<p align="JUSTIFY"> <font lang="ZH-CN" size="3"></font><font face="宋体" lang="ZH-CN" size="3">
当使用完</font><font face="宋体"><font size="3">DrawDib DC</font><font lang="ZH-CN" size="3">后,可以用</font><font size="3">DrawDibClose</font><font lang="ZH-CN" size="3">函数释放它。</font><font size="3">DrawDibClose</font><font lang="ZH-CN" size="3">同时减少存取</font><font size="3">DLL</font><font lang="ZH-CN" size="3">的应用的计数。在应用程序中,</font><font size="3">DrawDibClose</font><font lang="ZH-CN" size="3">函数应是最后的</font><font size="3">DrawDib</font></font><font face="宋体" lang="ZH-CN" size="3">操作。</font></p>
<p align="JUSTIFY"> <font lang="ZH-CN" size="3"></font><font face="宋体" lang="ZH-CN" size="3">
可以创建任意多的</font><font face="宋体"><font size="3">DrawDib DC</font><font lang="ZH-CN" size="3">,也可以同时使用多个</font><font size="3">DrawDib
DC</font><font lang="ZH-CN" size="3">来绘制几幅位图。在应用程序中可以创建多个不同性质的</font><font size="3">DrawDib
DC</font><font lang="ZH-CN" size="3">,这样就可以选择最合适的</font><font size="3">DC</font><font lang="ZH-CN" size="3">设置。例如,在同一应用程序中,创建两个不同的</font><font size="3">DrawDib
DC</font></font><font face="宋体" lang="ZH-CN" size="3">,一个用来显示图象的正常分辨率,另一个用来显示图象的放大部分。</font></p>
<p align="JUSTIFY"> <font lang="ZH-CN" size="3"></font><font face="宋体" lang="ZH-CN" size="3">
为了更有效地运行,</font><font face="宋体"><font size="3">DrawDib</font><font lang="ZH-CN" size="3">函数组需要知道显示适配器及其驱动的信息。显示配置信息是在第一次使用包含</font><font size="3">DrawDib</font><font lang="ZH-CN" size="3">函数组的</font><font size="3">DLL</font><font lang="ZH-CN" size="3">时,对显示适配器通过了一系列的测试之后得到的。</font><font size="3">DrawDib</font><font lang="ZH-CN" size="3">函数组的所有应用都要用到这个配置信息。可以通过调用</font><font size="3">DrawDibProfileDisplay</font></font><font face="宋体" lang="ZH-CN" size="3">函数来强制重新进行这些测试。</font></p>
<p align="JUSTIFY"> <font lang="ZH-CN" size="3"></font><font face="宋体" lang="ZH-CN" size="3">
通常,取得和保存显示配置是一次性的事件。如果配置信息发现在这个系统中安装了另一个显示驱动时,</font><font size="3" face="宋体">DrawDib</font><font face="宋体" lang="ZH-CN" size="3">则重新进行测试。</font></p>
<p align="JUSTIFY"><font lang="ZH-CN"> </font></p>
<p align="JUSTIFY"><font face="宋体" lang="ZH-CN">图象再现</font></p>
<p align="JUSTIFY"> <font lang="ZH-CN" size="3"></font><font face="宋体" lang="ZH-CN" size="3">
创建了</font><font face="宋体"><font size="3">DrawDib DC</font><font lang="ZH-CN" size="3">后,就可以用</font><font size="3">DrawDibDraw</font><font lang="ZH-CN" size="3">函数将</font><font size="3">DIB</font><font lang="ZH-CN" size="3">绘至屏幕。当在</font><font size="3">8</font><font lang="ZH-CN" size="3">位深度的显示适配器上显示真彩色图象时,</font><font size="3">DrawDib</font></font><font face="宋体" lang="ZH-CN" size="3">将自动地抖动图象。</font></p>
<p align="JUSTIFY"> <font size="3"></font><font face="宋体" size="3">
DrawDib</font><font face="宋体"><font lang="ZH-CN" size="3">也透明地支持视频压缩器。当显示压缩位图时,可通过</font><font size="3">DrawDibGetBuffer</font><font lang="ZH-CN" size="3">函数得到包含了解压图象数据的缓冲区。如果位图是未压缩的,则</font><font size="3">DrawDibGetBuffer</font><font lang="ZH-CN" size="3">返回</font><font size="3">NULL</font></font><font lang="ZH-CN" size="3" face="宋体">。在应用程序中应自己区分位图是否压缩。</font></p>
<p align="JUSTIFY"> <font lang="ZH-CN" size="3"></font><font lang="ZH-CN" size="3" face="宋体">
可用</font><font face="宋体" size="3">DrawDibUpdate</font><font lang="ZH-CN" size="3" face="宋体">宏来刷新一幅图象的整体或一部分的显示。</font></p>
<p align="JUSTIFY"><font lang="ZH-CN"> </font></p>
<p align="JUSTIFY"><font face="宋体" lang="ZH-CN">图象序列</font></p>
<p align="JUSTIFY"><font lang="ZH-CN"><font lang="ZH-CN" size="3" face="宋体">
当</font><font face="宋体"><font size="3">DrawDibDraw</font><font lang="ZH-CN" size="3">函数同</font><font size="3">DrawDibBegin</font><font lang="ZH-CN" size="3">函数一起运用时,可以显示相同尺寸和格式的位图序列。</font><font size="3">DrawDib</font><font lang="ZH-CN" size="3">通过</font><font size="3">DrawDibBegin</font><font lang="ZH-CN" size="3">准备绘图的</font><font size="3">DrawDib
DC</font><font lang="ZH-CN" size="3">来提高</font><font size="3">DrawDibDraw</font><font lang="ZH-CN" size="3">的效率。如果,应用程序没有调用</font><font size="3">DrawDibBegin</font><font lang="ZH-CN" size="3">,那么</font><font size="3">DrawDibDraw</font><font lang="ZH-CN" size="3">会在绘图前隐含地执行</font><font size="3">DrawDibBegin</font></font><font lang="ZH-CN" size="3" face="宋体">。</font></font></p>
<p align="JUSTIFY"> <font size="3"></font><font face="宋体" size="3">
DrawDibBegin</font><font face="宋体"><font lang="ZH-CN" size="3">给</font><font size="3">DrawDibDraw</font><font lang="ZH-CN" size="3">提供了</font><font size="3">DrawDib</font><font lang="ZH-CN" size="3">的</font><font size="3">DC</font><font lang="ZH-CN" size="3">,</font><font size="3">DC</font><font lang="ZH-CN" size="3">的句柄,</font><font size="3">BITMAPINFOHEADER</font><font lang="ZH-CN" size="3">结构的地址和源矩形及目的矩形的尺寸。当要显示一个位图序列时,</font><font size="3">DrawDibDraw</font><font lang="ZH-CN" size="3">要检查序列中的每幅图象的这些值。如果</font><font size="3">DrawDibDraw</font><font lang="ZH-CN" size="3">检测到这些值有任何变化,它将隐含地再次调用</font><font size="3">DrawDibBegin</font><font lang="ZH-CN" size="3">来调整</font><font size="3">DrawDib
DC</font></font><font lang="ZH-CN" size="3" face="宋体">的设置。</font></p>
<p align="JUSTIFY"> <font lang="ZH-CN" size="3"></font><font lang="ZH-CN" size="3" face="宋体">
当调用完</font><font face="宋体"><font size="3">DrawDibBegin</font><font lang="ZH-CN" size="3">后,就可以指定一个或多个适当的标志来调用</font><font size="3">DrawDibDraw</font><font lang="ZH-CN" size="3">绘制图象序列。只要</font><font size="3">DC</font><font lang="ZH-CN" size="3">句柄未改变,就可指定</font><font size="3">DDF_SAME_HDC</font><font lang="ZH-CN" size="3">标志;下列参数未改变,就可指定</font><font size="3">DDF_SAME_DRAW</font><font lang="ZH-CN" size="3">标志:</font><font size="3">BITMAPINFOHEADER</font></font><font lang="ZH-CN" size="3" face="宋体">结构的地址和源矩形及目的矩形的尺寸。</font></p>
<p align="JUSTIFY"> <font lang="ZH-CN" size="3"></font><font lang="ZH-CN" size="3" face="宋体">
可以通过在</font><font face="宋体"><font size="3">DrawDibEnd</font><font lang="ZH-CN" size="3">后跟另一个</font><font size="3">DrawDibBegin</font><font lang="ZH-CN" size="3">调用来更新前一个</font><font size="3">DrawDibBegin</font><font lang="ZH-CN" size="3">设置的标志。</font><font size="3">DrawDibEnd</font><font lang="ZH-CN" size="3">清除了当前的</font><font size="3">DrawDib
DC</font><font lang="ZH-CN" size="3">的标志和设置。后续的调用</font><font size="3">DrawDibBegin</font><font lang="ZH-CN" size="3">将重新初始化</font><font size="3">DrawDib
DC</font><font lang="ZH-CN" size="3">,并重新设置适当的标志和设置。然而,只要至少改变了以下任一个当前的标志设置:</font><font size="3">BITMAPINFOHEADER</font><font lang="ZH-CN" size="3">结构的地址或是源矩形或目的矩形的尺寸,也可不使用</font><font size="3">DrawDibEnd</font><font lang="ZH-CN" size="3">而直接调用</font><font size="3">DrawDibBegin</font><font lang="ZH-CN" size="3">来更新一个</font><font size="3">DrawDib
DC</font></font><font lang="ZH-CN" size="3" face="宋体">。</font></p>
<p align="JUSTIFY"> <font lang="ZH-CN" size="3"></font><font lang="ZH-CN" size="3" face="宋体">
通过使用</font><font face="宋体"><font size="3">DrawDibStart</font><font lang="ZH-CN" size="3">和</font><font size="3">DrawDibStop</font><font lang="ZH-CN" size="3">函数,可以提高使用压缩图象的数据流操作(如回放一个视频片)的</font><font size="3">DrawDibDraw</font><font lang="ZH-CN" size="3">的效率。</font><font size="3">DrawDibStart</font><font lang="ZH-CN" size="3">通过发送一个消息告诉视频管理器(</font><font size="3">VCM</font><font lang="ZH-CN" size="3">)准备</font><font size="3">DrawDib
DC</font><font lang="ZH-CN" size="3">来接受一个图象流。当流结束时,</font><font size="3">DrawDibStop</font><font lang="ZH-CN" size="3">发送一个消息给</font><font size="3">VCM</font></font><font lang="ZH-CN" size="3" face="宋体">来指示它释放申请的资源。</font></p>
<p align="JUSTIFY"> <font lang="ZH-CN" size="3"></font><font lang="ZH-CN" size="3" face="宋体">
需要注意的是,在应用程序中必须确定源矩形和目的矩形的宽度和高度;然而却并不需要确定这些矩形的起点。应用程序可以重新</font><font size="3" face="宋体">DrawDibDraw</font><font lang="ZH-CN" size="3" face="宋体">中的起点坐标来使用图象的不同部分或更新显示的不同部分。</font></p>
<a name="xxqqWholeArea"></a>
<p align="JUSTIFY"><font lang="ZH-CN"> </font></p>
<p align="JUSTIFY"><font face="宋体" lang="ZH-CN"><a name="xxqqWholeArea"><font color="#000000">调色板</font></a></font></p>
<p align="JUSTIFY"> <font size="3"></font><font face="宋体" size="3">
DrawDib</font><font face="宋体"><font lang="ZH-CN" size="3">函数组需要响应两条调色板消息:</font><font size="3">WM_QUERYNEWPALETTE</font><font lang="ZH-CN" size="3">和</font><font size="3">WM_PALETTECHANGED</font></font><font lang="ZH-CN" size="3" face="宋体">。如果应用程序未注意到调色板,就需要对这些消息都增加一个各自的消息处理。</font></p>
<p align="JUSTIFY"> <font lang="ZH-CN" size="3"></font><font lang="ZH-CN" size="3" face="宋体">
通过使用</font><font face="宋体"><font size="3">DrawDibRealize</font><font lang="ZH-CN" size="3">函数可在当前</font><font size="3">DC</font><font lang="ZH-CN" size="3">中实现当前</font><font size="3">DrawDib</font><font lang="ZH-CN" size="3">的调色板。应当在响应</font><font size="3">WM_QUERYNEWPALETTE</font><font lang="ZH-CN" size="3">和</font><font size="3">WM_PALETTECHANGED</font><font lang="ZH-CN" size="3">消息时,或在用</font><font size="3">DrawDibDraw</font></font><font lang="ZH-CN" size="3" face="宋体">函数显示一个图象序列的准备过程中实现调色板。</font></p>
<p align="JUSTIFY"> <font lang="ZH-CN" size="3"></font><font lang="ZH-CN" size="3" face="宋体">
可以用</font><font face="宋体"><font size="3">DrawDibSetPallette</font><font lang="ZH-CN" size="3">函数用另一个调色板的映射来绘一幅图象。</font><font size="3">DrawDibSetPallette</font><font lang="ZH-CN" size="3">强迫</font><font size="3">DrawDib
DC</font><font lang="ZH-CN" size="3">使用指定的调色板,而这会影响到图象的质量。例如,一个注意调色板的应用程序,可能已经实现了一个调色板并需要阻止</font><font size="3">DrawDib</font><font lang="ZH-CN" size="3">实现它自己的调色板。应用程序可以通过</font><font size="3">DrawDibSetPalette</font><font lang="ZH-CN" size="3">来通知</font><font size="3">DrawDib</font></font><font lang="ZH-CN" size="3" face="宋体">调色板的使用。</font></p>
<p align="JUSTIFY"> <font lang="ZH-CN" size="3"></font><font lang="ZH-CN" size="3" face="宋体">
通过使用</font><font size="3" face="宋体">DrawDibGetPallette</font><font lang="ZH-CN" size="3" face="宋体">函数可以获得当前前景调色板的一个句柄。如果应用程序使用了当前前景调色板,它并没有对调色板的完全使用权,另一个应用程序能够使这个调色板句柄无效。当使用完毕后,应用程序不应该释放调色板,那样会使另一个应用程序不能使用调色板。</font></p>
<p align="JUSTIFY"> <font lang="ZH-CN" size="3"></font><font face="宋体" lang="ZH-CN" size="3">
通过使用</font><font face="宋体"><font size="3">DrawDibChangPallete</font><font lang="ZH-CN" size="3">函数可以为它的调色板</font><font size="3">DrawDib</font><font lang="ZH-CN" size="3">来接收新的颜色值。在紧跟</font><font size="3">DrawDibChangPallete</font><font lang="ZH-CN" size="3">的后面的代码里,可以为调色板颜色表指定新的值。当调用</font><font size="3">DrawDibChangPalette</font><font lang="ZH-CN" size="3">时,在</font><font size="3">DrawDib
DC</font><font lang="ZH-CN" size="3">中未设置</font><font size="3">DDF_ANIMATE</font><font lang="ZH-CN" size="3">标志的话,可以通过使用</font><font size="3">DrawDibRealize</font><font lang="ZH-CN" size="3">来实现调色板和</font><font size="3">DrawDibDraw</font><font lang="ZH-CN" size="3">重绘图象来实现调色板的改变。如果</font><font size="3">DDF_ANIMATE</font><font lang="ZH-CN" size="3">标志在</font><font size="3">DrawDib
DC</font><font lang="ZH-CN" size="3">中设置了,就可以通过</font><font size="3">DrawDibDraw</font><font lang="ZH-CN" size="3">或</font><font size="3">DrawDibRealize</font><font lang="ZH-CN" size="3">来实现调色板和显示着的位图颜色的动画。通过</font><font size="3">DrawDibEnd</font><font lang="ZH-CN" size="3">和</font><font size="3">DrawDibBegin</font><font lang="ZH-CN" size="3">可以</font><font size="3">DDF_ANIMATE</font></font><font face="宋体" lang="ZH-CN" size="3">标志。</font></p>
<p align="JUSTIFY"> <font lang="ZH-CN" size="3"></font><font face="宋体" lang="ZH-CN" size="3">
如果释放了被选入</font><font face="宋体"><font size="3">DC</font><font lang="ZH-CN" size="3">的</font><font size="3">DrawDib</font><font lang="ZH-CN" size="3">调色板,</font><font size="3">DC</font><font lang="ZH-CN" size="3">使用调色板时会报告一个</font><font size="3">GDI</font><font lang="ZH-CN" size="3">错误。相反,应该使用</font><font size="3">DrawDibSetPalette</font><font lang="ZH-CN" size="3">改变</font><font size="3">DrawDib
DC</font></font><font face="宋体" lang="ZH-CN" size="3">来使用省缺调色板后另一调色板。</font></p>
<p align="JUSTIFY"> <font lang="ZH-CN" size="3"></font><font face="宋体" lang="ZH-CN" size="3">
由于以下函数会释放</font><font face="宋体"><font size="3">DrawDib</font><font lang="ZH-CN" size="3">调色板,所以,除非调色板不被</font><font size="3">DC</font><font lang="ZH-CN" size="3">选中不应使用:</font><font size="3">DrawDibEnd,DrawDibClose</font><font lang="ZH-CN" size="3">和</font><font size="3">DrawDibBegin</font><font lang="ZH-CN" size="3">。同样的,当使用了相同的</font><font size="3">DrawDib
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -