📄 bcb_g17.htm
字号:
DC</font><font lang="ZH-CN" size="3">,但指定了不同的绘制参数(</font><font size="3">lpbi,dxDst,dyDst,dxSrc</font><font lang="ZH-CN" size="3">或</font><font size="3">dySrc</font><font lang="ZH-CN" size="3">)或不同格式时,</font><font size="3">DrawDibDraw</font></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">DrawDibTime</font><font lang="ZH-CN" size="3">函数可以得到一些关于完全重复特定次数</font><font size="3">DrawDib</font><font lang="ZH-CN" size="3">操作所需时间。</font><font size="3">DrawDibTime</font></font><font face="宋体" lang="ZH-CN" size="3">返回以下操作的时间:</font></p>
<ul>
<li><font face="宋体" lang="ZH-CN" size="3">绘制一幅位图</font></li>
<li><font face="宋体" lang="ZH-CN" size="3">解压一幅位图</font></li>
<li><font face="宋体" lang="ZH-CN" size="3">抖动一幅位图</font></li>
<li><font face="宋体" lang="ZH-CN" size="3">拉伸一幅位图</font></li>
<li><font lang="ZH-CN" size="3"></font><font face="宋体" lang="ZH-CN" size="3">使用</font><font size="3" face="宋体">BitBlt</font><font face="宋体" lang="ZH-CN" size="3">函数变换一幅位图</font></li>
<li> <font lang="ZH-CN" size="3"></font><font face="宋体" lang="ZH-CN" size="3">使用</font><font size="3" face="宋体">StrecthDIBits</font><font face="宋体" lang="ZH-CN" size="3">函数变换一幅位图</font></li>
</ul>
<p align="JUSTIFY"> <font lang="ZH-CN" size="3"></font><font face="宋体" lang="ZH-CN" size="3">
得到返回值后,</font><font size="3" face="宋体">DrawDibTime</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">DrawDibTime</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"> </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 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">WM_PALETTECHANGED</font><font lang="ZH-CN" size="3">和</font><font size="3">WM_QUERYNEWPALETTE</font><font lang="ZH-CN" size="3">消息的处理。这个例子用了</font><font size="3">DrawDibRealize</font><font lang="ZH-CN" size="3">函数来进行</font><font size="3">WM_QUERYNEWPALETTE</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">DrawDibDraw</font><font lang="ZH-CN" size="3">函数重绘图象来响应</font><font size="3">WM_QUERYNEWPALETTE</font><font lang="ZH-CN" size="3">消息。应用</font><font size="3">DrawDibRealize</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 face="宋体" size="3">
case WM_PALETTECHANGED:<br>
if ((HWND) wParam == hwnd)<br>
break;<br>
case WM_QUERYNEWPALETTE:<br>
hdc = GetDC(hwnd);<br>
f = DrawDibRealize (hdd,hdc,FALSE) > 0;<br>
ReleaseDC (hwnd,hdc);<br>
if (f)<br>
InvalidateRect ( hwnd,NULL,TRUE);<br>
break;</font></p>
<p align="JUSTIFY"> <font lang="ZH-CN" size="3"></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><font size="3" face="宋体">DrawDib
DC.</font></p>
<p align="JUSTIFY"><font face="宋体" size="3">
hdc = GetDC(hwnd);<br>
DrawDibBegin(hdd,hdc,dxDest,dyDest,lpbi,dxSrc,dySrc,NULL);<br>
DrawDibRealize(hdd,hdc,fBackground);<br>
DrawDibDraw(hdd,hdc,xDst,yDst,dxDst,dyDst,lpbi,lpBits,<br>
xSrc,ySrc,dxSrc,dySrc,DDF_SAME_DRAW|DDF_SAME_HDC);<br>
DrawDibDraw(hdd,hdc,xDst,yDst,dxDst,dyDst,lpbi,lpBits,<br>
xSrc,ySrc,dxSrc,dySrc,DDF_SAME_DRAW|DDF_SAME_HDC);<br>
DrawDibDraw(hdd,hdc,xDst,yDst,dxDst,dyDst,lpbi,lpBits,<br>
xSrc,ySrc,dxSrc,dySrc,DDF_SAME_DRAW|DDF_SAME_HDC);<br>
ReleaseDC(hwnd,hdc);</font></p>
<p align="JUSTIFY"> <font lang="ZH-CN" size="3"></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,DrawDibChangPalette</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">DrawDibBegin</font><font lang="ZH-CN" size="3">函数协同</font><font size="3">DrawDibChangepalette</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 lang="ZH-CN" size="3">标志允许调色板改变;然后,用</font><font size="3">DrawDibChangePalette</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">lppe</font><font lang="ZH-CN" size="3">是一个包含新颜色的</font><font size="3">PALETTEENTRY</font><font lang="ZH-CN" size="3">队列的地址,并且</font><font size="3">lpbi</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">LPBITMAPINFOHEADER</font><font lang="ZH-CN" size="3">结构,则后面的程序片段更新</font><font size="3">DIB</font></font><font lang="ZH-CN" size="3" face="宋体">的颜色表。</font></p>
<p align="JUSTIFY"><font face="宋体" size="3">
hdc = GetDC(hwnd);<br>
DrawDibBegin(hdd,…,DDF_ANIMATE);<br>
DrawDibRealize(hdd,hdc,fBackground);<br>
DrawDibDraw(hdd,hdc,…,DDF_SAME_DRAW|DDF_SAME_HDC);<br>
//<font lang="ZH-CN">改变颜色调用</font><br>
DrawDibChangePalette(hdd,iStart,iLen,lppe);<br>
……<br>
ReleaseDC(hwnd,hdc);</font></p>
<p> <font lang="ZH-CN" size="3"></font><font lang="ZH-CN" size="3" face="宋体">
下面给出一个实例的关键片段加以说明:(在</font><font face="宋体"><font size="3">Visual C++ 4.2
</font><font lang="ZH-CN" size="3">下</font><font size="3">Windows95</font><font lang="ZH-CN" size="3">或</font><font size="3">Windows
NT</font></font><font lang="ZH-CN" size="3" face="宋体">环境下通过。)</font></p>
<p><font face="宋体" size="3"> void
CTestDrawDibView::OnDraw(CDC* pDC)</font></p>
<p> <font lang="ZH-CN" size="3"></font><font lang="ZH-CN" size="3" face="宋体">
{</font></p>
<p> <font lang="ZH-CN" size="3"></font><font size="3" face="宋体">
CTestDrawDibDoc* pDoc = GetDocument();//</font><font lang="ZH-CN" size="3" face="宋体">得到文档指针</font></p>
<p> <font lang="ZH-CN" size="3"></font><font size="3"><font face="宋体">
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -