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

📄 csdn_文档中心_打印位图(上).htm

📁 csdn10年中间经典帖子
💻 HTM
📖 第 1 页 / 共 4 页
字号:
          <TD align=middle bgColor=#003399><FONT color=#ffffff>关键字</FONT></TD>
          <TD width=500>&nbsp;&nbsp;&nbsp;&nbsp;打印 位图</TD></TR>
        <TR>
          <TD align=middle height=5></TD>
          <TD align=middle width=500></TD></TR></TBODY></TABLE><!--文章说明信息结束//-->
      <TABLE border=0 width=600>
        <TBODY>
        <TR>
          <TD align=left><BR>
            <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT size=3><SPAN 
            lang=EN-US><SPAN 
            style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            </SPAN></SPAN><SPAN 
            style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">关于位图的打印,很多人对此很困惑,在这方面产生的问题也很多,主要包括以下几点。</SPAN></FONT></P>
            <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT size=3><SPAN 
            lang=EN-US><SPAN 
            style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            </SPAN>1</SPAN><SPAN 
            style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">:打印的图片太小;</SPAN></FONT></P>
            <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT size=3><SPAN 
            lang=EN-US><SPAN 
            style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            </SPAN>2</SPAN><SPAN 
            style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">:根本打印不出来位图</SPAN></FONT></P>
            <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT size=3><SPAN 
            lang=EN-US><SPAN 
            style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            </SPAN>3</SPAN><SPAN 
            style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">:打印预览可见、但打印不出来;</SPAN></FONT></P>
            <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT size=3><SPAN 
            lang=EN-US><SPAN 
            style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            </SPAN></SPAN><SPAN 
            style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">产生这些问题的根本原因,在于对位图的理解不够深刻。</SPAN></FONT></P>
            <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT size=3><SPAN 
            lang=EN-US><SPAN 
            style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            </SPAN></SPAN><SPAN 
            style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">一个</SPAN><SPAN 
            lang=EN-US>CBitmap</SPAN><SPAN 
            style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对象,可能是</SPAN><SPAN 
            lang=EN-US>DDB</SPAN><SPAN 
            style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">位图(设备相关位图),或者</SPAN><SPAN 
            lang=EN-US>DIB</SPAN><SPAN 
            style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">位图(设备无关位图),其中,一个设备兼容的内存</SPAN><SPAN 
            lang=EN-US>DC</SPAN><SPAN 
            style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中,只能选择该设备兼容的</SPAN><SPAN 
            lang=EN-US>DDB</SPAN><SPAN 
            style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">位图或者单色的位图。注意,位图只能被选择进入到设备兼容的内存</SPAN><SPAN 
            lang=EN-US>DC</SPAN><SPAN 
            style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中,并不能选择进入到真实的</SPAN><SPAN 
            lang=EN-US>dc</SPAN><SPAN 
            style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中,这就是有时候根本打印不出来图片的原因。</SPAN></FONT></P>
            <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT size=3><SPAN 
            lang=EN-US><SPAN 
            style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            </SPAN></SPAN><SPAN 
            style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">至于打印图片太小的问题,主要是因为衡量位图大小的单位是横向和纵向的像素数,而不是确切的长度,所以如果把一个图片映射到屏幕上,会出现一个比较大的图像,但是打印机的分辨率比屏幕高很多(屏幕一般是</SPAN><SPAN 
            lang=EN-US>96dpi</SPAN><SPAN 
            style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">,而打印机最少一般也有</SPAN><SPAN 
            lang=EN-US>300dpi</SPAN><SPAN 
            style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">),如果把位图不缩放地映射到打印机上,则必然要小很多。解决该类问题的方法是使用</SPAN><SPAN 
            lang=EN-US>StretchBlt</SPAN><SPAN 
            style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">拉伸显示图像。</SPAN></FONT></P>
            <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT size=3><SPAN 
            lang=EN-US><SPAN 
            style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            </SPAN></SPAN><SPAN 
            style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">另外</SPAN><SPAN 
            lang=EN-US>LoadImage</SPAN><SPAN 
            style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">函数中使用</SPAN><SPAN 
            lang=EN-US>LR_CREATEDIBSECTION</SPAN><SPAN 
            style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">选项产生的</SPAN><SPAN 
            lang=EN-US>DIB</SPAN><SPAN 
            style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">位图可以被选择进入任何设备兼容的内存</SPAN><SPAN 
            lang=EN-US>DC</SPAN><SPAN 
            style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中。因此可以使用</SPAN><SPAN 
            lang=EN-US>LoadImage</SPAN><SPAN 
            style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">函数加载一个位图文件或者资源,直接把位图通过</SPAN><SPAN 
            lang=EN-US>StretchBlt</SPAN><SPAN 
            style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">打印出来。下面是把一个位图文件进行打印的相关代码:</SPAN></FONT></P>
            <P align=left class=MsoNormal 
            style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><SPAN 
            lang=EN-US 
            style="COLOR: #009900; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt">/*<?xml:namespace 
            prefix = o ns = "urn:schemas-microsoft-com:office:office" 
            /><o:p></o:p></SPAN></P>
            <P align=left class=MsoNormal 
            style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><SPAN 
            lang=EN-US 
            style="COLOR: #009900; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt">//</SPAN><SPAN 
            style="COLOR: #009900; FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt">打印或者在屏幕左上角上画位图文件</SPAN><SPAN 
            lang=EN-US 
            style="COLOR: #009900; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt"><o:p></o:p></SPAN></P>
            <P align=left class=MsoNormal 
            style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><SPAN 
            lang=EN-US 
            style="COLOR: #009900; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt">//pDC 
            </SPAN><SPAN 
            style="COLOR: #009900; FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt">打印机或者屏幕</SPAN><SPAN 
            lang=EN-US 
            style="COLOR: #009900; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt">dc</SPAN><SPAN 
            style="COLOR: #009900; FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt">指针</SPAN><SPAN 
            lang=EN-US 
            style="COLOR: #009900; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt"><o:p></o:p></SPAN></P>
            <P align=left class=MsoNormal 
            style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><SPAN 
            lang=EN-US 
            style="COLOR: #009900; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt">iLogPixelX<o:p></o:p></SPAN></P>
            <P align=left class=MsoNormal 
            style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><SPAN 
            lang=EN-US 
            style="COLOR: #009900; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt">iLogPixelY<o:p></o:p></SPAN></P>
            <P align=left class=MsoNormal 
            style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><SPAN 
            style="COLOR: #009900; FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt">屏幕</SPAN><SPAN 
            lang=EN-US 
            style="COLOR: #009900; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt">DC</SPAN><SPAN 
            style="COLOR: #009900; FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt">的</SPAN><SPAN 
            lang=EN-US 
            style="COLOR: #009900; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt">GetDeviceCaps(LOGPIXELSX)</SPAN><SPAN 
            style="COLOR: #009900; FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt">值,其中</SPAN><SPAN 
            lang=EN-US 
            style="COLOR: #009900; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt"><o:p></o:p></SPAN></P>
            <P align=left class=MsoNormal 
            style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><SPAN 
            lang=EN-US 
            style="COLOR: #009900; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt">iLogPixelX=DC.GetDeviceCaps(LOGPIXELSX);<o:p></o:p></SPAN></P>
            <P align=left class=MsoNormal 
            style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><SPAN 
            lang=EN-US 
            style="COLOR: #009900; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt">iLogPixelY=DC.GetDeviceCaps(LOGPIXELSY);<o:p></o:p></SPAN></P>
            <P align=left class=MsoNormal 
            style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><SPAN 
            lang=EN-US 
            style="COLOR: #009900; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt">const 
            char *strFileName BMP</SPAN><SPAN 
            style="COLOR: #009900; FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt">图片文件名称</SPAN><SPAN 
            lang=EN-US 
            style="COLOR: #009900; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt"><o:p></o:p></SPAN></P>
            <P align=left class=MsoNormal 
            style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><SPAN 
            lang=EN-US 
            style="COLOR: #009900; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt">*/</SPAN><SPAN 
            lang=EN-US 
            style="COLOR: black; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt"><o:p></o:p></SPAN></P>
            <P align=left class=MsoNormal 
            style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><SPAN 
            lang=EN-US 
            style="COLOR: blue; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt">void</SPAN><SPAN 
            lang=EN-US 
            style="COLOR: black; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt"> 
            DrawBMP(CDC* pDC,</SPAN><SPAN lang=EN-US 
            style="COLOR: blue; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt">int</SPAN><SPAN 
            lang=EN-US 
            style="COLOR: black; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt"> 
            iLogPixelX,</SPAN><SPAN lang=EN-US 
            style="COLOR: blue; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt">int</SPAN><SPAN 
            lang=EN-US 
            style="COLOR: black; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt"> 
            iLogPixelY,</SPAN><SPAN lang=EN-US 
            style="COLOR: blue; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt">const</SPAN><SPAN 
            lang=EN-US 
            style="COLOR: black; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt"> 
            </SPAN><SPAN lang=EN-US 
            style="COLOR: blue; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt">char</SPAN><SPAN 
            lang=EN-US 
            style="COLOR: black; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt"> 
            *strFileName)<o:p></o:p></SPAN></P>
            <P align=left class=MsoNormal 
            style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><SPAN 
            lang=EN-US 
            style="COLOR: black; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt">{<o:p></o:p></SPAN></P>
            <P align=left class=MsoNormal 
            style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><SPAN 
            lang=EN-US 
            style="COLOR: black; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt"><SPAN 
            style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            </SPAN>CDC<SPAN style="mso-tab-count: 1"> </SPAN><SPAN 
            style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            </SPAN>MemDC; </SPAN><SPAN lang=EN-US 
            style="COLOR: #009900; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt">// 
            </SPAN><SPAN 
            style="COLOR: #009900; FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt">内存设备环境指针,在视的整个存在过程都将存在</SPAN><SPAN 
            lang=EN-US 
            style="COLOR: black; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt"><o:p></o:p></SPAN></P>
            <P align=left class=MsoNormal 
            style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><SPAN 
            lang=EN-US 

⌨️ 快捷键说明

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