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

📄 subject_20268.htm

📁 一些关于vc的问答
💻 HTM
字号:
<p>
序号:20268 发表者:不得已 发表日期:2002-11-05 09:23:33
<br>主题:关于HDC的问题
<br>内容:怎样把一个已知HDC中的BMP存到BYTE*中?<BR><BR>急!!
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:CDMA2000 回复日期:2002-11-05 09:52:17
<br>内容:把位图写入一个BMP文件<BR>如果具有一个设备无关的位图句柄,把一个位图写入BMP文件非常简单:<BR>在位图内容之后写入BITMAPINFOHEADER信息即可。<BR>需要设置BITMAPINFOHEADER的三个成员是<BR>bfType,其值为"BM",<BR>bfSize,其值是位图的大小,<BR>以及,bfOffBits,其值为文件开始到位图位的偏移量。 <BR><BR>// WriteDIB&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- Writes a DIB to file<BR>// Returns&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- TRUE on success<BR>// szFile&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- Name of file to write to<BR>// hDIB&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- Handle of the DIB<BR>BOOL WriteDIB( LPTSTR szFile, HANDLE hDIB)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;BITMAPFILEHEADER&nbsp;&nbsp;&nbsp;&nbsp;hdr;<BR>&nbsp;&nbsp;&nbsp;&nbsp;LPBITMAPINFOHEADER&nbsp;&nbsp;&nbsp;&nbsp;lpbi;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;if (!hDIB)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return FALSE;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;CFile file;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if( !file.Open( szFile, CFile::modeWrite|CFile::modeCreate) )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return FALSE;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;lpbi = (LPBITMAPINFOHEADER)hDIB;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;int nColors = 1 &lt;&lt; lpbi-&gt;biBitCount;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;// Fill in the fields of the file header <BR>&nbsp;&nbsp;&nbsp;&nbsp;hdr.bfType= ((WORD) ('M' &lt;&lt; 8) | 'B'); // is always "BM"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hdr.bfSize=GlobalSize(hDIB) + sizeof( hdr ); <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hdr.bfReserved1=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hdr.bfReserved2=0; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hdr.bfOffBits=(DWORD) (sizeof( hdr ) + lpbi-&gt;biSize +nColors * sizeof(RGBQUAD));<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;// Write the file header <BR>&nbsp;&nbsp;&nbsp;&nbsp;file.Write( &hdr, sizeof(hdr) );<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;// Write the DIB header and the bits <BR>&nbsp;&nbsp;&nbsp;&nbsp;file.Write( lpbi, GlobalSize(hDIB) );<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;return TRUE;<BR>}
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:不得已 回复日期:2002-11-05 10:11:10
<br>内容:谢谢CDMA2000,是这样的。我已经把一个在BYTE*中存在的BMP文件放入一个HDC中并显示到了一个窗口上面而且加入一些操作,现在我需要把这个在HDC中的BMP文件再次放回BYTE*中请问怎样操作。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:CDMA2000 回复日期:2002-11-05 10:17:58
<br>内容:那你在将BMP文件放入DC中时应该可以返回一个位图的临时指针啊<BR>利用该指针获得该位图的句柄(调用GetSafeHandle()),<BR>然后利用该句柄传递上面我给你的代码就可以保存了啊;<BR><BR>关键问题你先要得到位图的句柄!<BR>因为DC只是一个绘制环境!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:不得已 回复日期:2002-11-05 10:28:30
<br>内容:请问用API函数怎么得到位图的句柄?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:徐景周 回复日期:2002-11-05 10:29:32
<br>内容:参看下面最后:<BR>http://www.copathway.com/itbookreview/view_paper.asp?paper_id=363
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>

⌨️ 快捷键说明

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