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

📄 chap11_3.htm

📁 VC++编程实例。非常详细
💻 HTM
📖 第 1 页 / 共 2 页
字号:
              </td>
              <td width="78%">
                <p align="JUSTIFY">把源位图反转然后拷贝到目的地
              </td>
            </tr>
            <tr> 
              <td width="22%">
                <p align="JUSTIFY">NOTSRCERASE
              </td>
              <td width="78%">
                <p align="JUSTIFY">用或操作融合源和目的位图,然后再反转
              </td>
            </tr>
            <tr> 
              <td width="22%">
                <p align="JUSTIFY">PATCOPY
              </td>
              <td width="78%">
                <p align="JUSTIFY">把图案拷贝到目的位图中
              </td>
            </tr>
            <tr> 
              <td width="22%">
                <p align="JUSTIFY">PATINVERT
              </td>
              <td width="78%">
                <p align="JUSTIFY">用异或操作把图案与目的位图相融合
              </td>
            </tr>
            <tr> 
              <td width="22%">
                <p align="JUSTIFY">PATPAINT
              </td>
              <td width="78%">
                <p align="JUSTIFY">用或操作融合图案和反转的源位图,然后用或操作把结果与目的位图融合
              </td>
            </tr>
            <tr> 
              <td width="22%">
                <p align="JUSTIFY">SRCAND
              </td>
              <td width="78%">
                <p align="JUSTIFY">用与操作融合源位图和目的位图
              </td>
            </tr>
            <tr> 
              <td width="22%">
                <p align="JUSTIFY">SRCCOPY
              </td>
              <td width="78%">
                <p align="JUSTIFY">把源位图拷贝到目的位图
              </td>
            </tr>
            <tr> 
              <td width="22%">
                <p align="JUSTIFY">SRCERASE
              </td>
              <td width="78%">
                <p align="JUSTIFY">先反转目的位图,再用与操作将其与源位图融合
              </td>
            </tr>
            <tr> 
              <td width="22%">
                <p align="JUSTIFY">SRCINVERT
              </td>
              <td width="78%">
                <p align="JUSTIFY">用异或操作融合源位图和目的位图
              </td>
            </tr>
            <tr> 
              <td width="22%">
                <p align="JUSTIFY">SRCPAINT
              </td>
              <td width="78%">
                <p align="JUSTIFY">用或操作融合源位图和目的位图
              </td>
            </tr>
            <tr> 
              <td width="22%">
                <p align="JUSTIFY">WHITENESS
              </td>
              <td width="78%">
                <p align="JUSTIFY">输出白色
              </td>
            </tr>
          </table>
          <p> </p>
          <p align="JUSTIFY"> </p>
          <p align="JUSTIFY">函数CDC::StretchBlt的声明为:</p>
          <blockquote> 
            <blockquote> 
              <blockquote> 
                <p align="JUSTIFY">BOOL StretchBlt( int x, int y, int nWidth, 
                  int nHeight, CDC* pSrcDC, int xSrc, int ySrc, int nSrcWidth, 
                  int nSrcHeight, DWORD dwRop );</p>
              </blockquote>
            </blockquote>
          </blockquote>
          <p> </p>
          <p align="JUSTIFY">  该函数把位图从源矩形拷贝到目的矩形中,如果源和目的矩形尺寸不同,那么将缩放位图的功能以适应目的矩形的大小。函数的大部分参数与BitBlt的相同,但多了两个参数nSrcWidth和nSrcHeight用来指定源矩形的宽和高。</p>
          <p align="JUSTIFY">  DDB的一个重要用途是用作设备上下文的显示表面。每一个设备上下文都包含有一个DDB,该位图实际上是在显示设备的缓冲区中(如视频内存),我们可以把它看做设备上下文的显示表面,设备上下文用GDI函数绘图实际上就是修改它所包含的DDB(显示表面)的过程。</p>
          <p align="JUSTIFY">  普通的设备上下文都是在屏幕上绘图的,而使用内存设备上下文则可以在系统内存中绘制图形。内存设备上下文是一种特殊的设备上下文,它将系统内存用作显示表面。程序可以使用内存设备上下文预先在系统内存中绘制复杂的图形,然后再快速地将其复制到实际的设备上下文的显示表面上,而绘制图形的结果仍保存在内存设备上下文的DDB中。</p>
          <div align="center">
            <center>
              <table border="2" cellpadding="2" cellspacing="0" width="100%" bgcolor="#77D2FF">
                <tr> 
                  <td width="100%"> <b></b>提示:有人可能会想到用BitBlt函数把绘图结果从显示设备拷贝到内存设备上下文中,这种方法可以工作,但有时会出错。当源矩形被别的窗口遮住时,BitBlt会把别的窗口中的像素拷贝下来。<b></b></td>
                </tr>
              </table>
            </center>
          </div>
          <p align="JUSTIFY">  内存设备上下文缺省的DDB是一个1×1的单色位图,如此小的显示表面显然是没有用的,因此程序一般要为内存设备对象选择一个合适大小的彩色DDB。</p>
          <p align="JUSTIFY">下面这段代码创建了一个内存设备上下文,并在其包含的DDB中画了一个灰色实心矩形,然后再把DDB输出到屏幕上。</p>
          <blockquote> 
            <p align="JUSTIFY">void CMyView::OnDraw(CDC* pDC)</p>
            <p align="JUSTIFY">{</p>
            <p align="JUSTIFY"><b>. . .</b></p>
            <p align="JUSTIFY"> <b></b>CDC MemDC;</p>
            <p align="JUSTIFY">CBitmap bm,*oldBmp;</p>
            <p align="JUSTIFY">MemDC.CreateCompatibleDC(pDC); //创建一个兼容的内存设备上下文</p>
            <p align="JUSTIFY">bm.CreateCompatibleBitmap(pDC,100,50); //创建一个兼容的DDB</p>
            <p align="JUSTIFY">oldBmp=MemDC.SelectObject(&amp;bm);</p>
            <p align="JUSTIFY">MemDC.SelectStockObject(BLACK_PEN);</p>
            <p align="JUSTIFY">MemDC.SelectStockObject(GRAY_BRUSH);</p>
            <p align="JUSTIFY">MemDC.Rectangle(0,0,50,50); //在DDB中画一个矩形</p>
            <p align="JUSTIFY">pDC-&gt;BitBlt(0,0,100,50,&amp;MemDC,0,0,SRCCOPY);</p>
            <p align="JUSTIFY">MemDC.SelectObject(oldBmp); //使位图bm对象脱离设备上下文</p>
            <p align="JUSTIFY"><b>. . .</b></p>
            <p align="JUSTIFY">}</p>
          </blockquote>
          <p align="JUSTIFY">  在上面的代码中,绘图的结果保存在位图bm中,一旦调用MemDC.SelectObject(oldBmp)使位图bm脱离设备上下文,该位图就可以被其它对象使用。</p>
          <div align="center">
            <center>
              <table border="0" cellpadding="0" cellspacing="0" width="615">
                <tr> 
                  <td><a href="chap11_2.htm">上一页</a></td>
                  <td>
                    <p align="right"><a href="chap11_4.htm">下一页</a>
                  </td>
                </tr>
              </table>
              <p><a href="http://www.cpcw.com">电脑报首页</a> <a href="../../index.htm">网络学院首页</a></p>
            </center>
          </div>
          <font size="5">
          <hr noshade color="#3973DE" size="1">
          </font>
          <p align="center"><font size="5"></font><font size="2" color="#000000">本教程由<a href="http://vcdynasty.yeah.net">Visual 
            C++王朝(Where programmers come together)</a>协助制作<br>
            未经许可,请勿以任何形式复制</font>
        </td>
      </tr>
    </table>
    </center>
</div>

</body>
</html>

⌨️ 快捷键说明

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