使用梦想绘图控件把DWG文件转成JPG 讲解
<h2></h2><div id="postmessage_231" class="t_msgfont"><font face="Verdana "><font size="5"></font></font><br/><font face="Verdana "><font face="Verdana "><font size="3">1.1</font></font><br/></font><font face="黑体 "><font size="3">说明</font></font><font face="宋体 "> 控件提供的接口,可以把</font><font face="Times New Roman ">dwg</font><font face="宋体 ">文件转换成</font><font face="Times New Roman ">Bmp,Jpg</font><font face="宋体 ">文件,也可以把</font><font face="Times New Roman ">DWG</font><font face="宋体 ">文件中某个区域的图形绘制到</font><font face="Times New Roman ">CDC</font><font face="宋体 ">上或保存为</font><font face="Times New Roman ">Bmp</font><font face="宋体 ">文件。这些接口即能在</font><font face="Times New Roman ">VC</font><font face="宋体 ">中使用,也能在</font><font face="Times New Roman ">VB</font><font face="宋体 ">,</font><font face="Times New Roman ">C#</font><font face="宋体 ">,</font><font face="Times New Roman ">Delphi,</font><font face="宋体 ">网页中调用。</font><br/><font face="Verdana "><font face="Verdana "><font size="3">1.2</font></font><br/></font><font face="Verdana "><font size="3">DwgToJpg</font></font><font face="宋体 "> 不需要使用控件打开</font><font face="Times New Roman ">dwg</font><font face="宋体 ">文件,直接把</font><font face="Times New Roman ">dwg</font><font face="宋体 ">文件转成</font><font face="Times New Roman ">jpg</font><font face="宋体 ">文件。</font><br/><font face="Times New Roman "></font><br/><strong><font size="2"><font color="#666699"><font face="Times New Roman ">VC</font><font face="宋体 ">接口:</font></font></font></strong><br/><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">BOOL</font></font><u><font face="宋体 "><font style="FONT-SIZE: 10pt;"> MxDraw</font></font></u><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">::<strong>DwgToJpg(</strong>IN</font></font><u><font face="宋体 "><font style="FONT-SIZE: 10pt;"> LPCTSTR</font></font></u><font style="FONT-SIZE: 9pt;"><font face="Times New Roman "> pszDwgFilePath,</font></font><br/><font style="FONT-SIZE: 9pt;"><font face="Times New Roman "><br/>OUT</font></font><u><font face="宋体 "><font style="FONT-SIZE: 10pt;"> LPCTSTR</font></font></u><font style="FONT-SIZE: 9pt;"><font face="Times New Roman "> pszJpgFilePath,</font></font><br/><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">int</font></font></u><font style="FONT-SIZE: 9pt;"><font face="Times New Roman "> iWidth = -1,</font></font><br/><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">int</font></font></u><font style="FONT-SIZE: 9pt;"><font face="Times New Roman "> iHeight = -1);</font></font><br/><strong><font size="2"><font color="#666699"><font face="Times New Roman ">COM</font><font face="宋体 ">接口:</font></font></font></strong><br/><p align="left"></p><p align="left"><u><font face="宋体 "><font style="FONT-SIZE: 10pt;"><strong>bool</strong></font></font></u><font face="宋体 "><font style="FONT-SIZE: 10pt;"><br/> <strong>DwgToJpg</strong>(</font></font><strong><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">string</font></font></u></strong><font face="宋体 "><font style="FONT-SIZE: 10pt;"><br/> pszDwgFileName<strong>, </strong></font></font><strong><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">string</font></font></u></strong><font face="宋体 "><font style="FONT-SIZE: 10pt;"><br/> pszJpgFileName<strong>, </strong></font></font><strong><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">int</font></font></u></strong><font face="宋体 "><font style="FONT-SIZE: 10pt;"><br/> lWidth<strong>, </strong></font></font><strong><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">int</font></font></u></strong><font face="宋体 "><font style="FONT-SIZE: 10pt;"><br/> lHeight)</font></font></p><p></p><p align="left"></p><p align="left"><font face="宋体 "><font style="FONT-SIZE: 10pt;"></font></font></p><p></p><font face="Times New Roman ">MxDrawXLib<font color="#000000">.</font>IMxDrawApplication<br/></font><font face="宋体 ">的成员</font><font style="FONT-SIZE: 9pt;"></font><br/><font face="宋体 "><strong><font size="2"><font color="#666699">参数:</font></font></strong></font><br/><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">pszDwgFilePath<br/></font></font><font face="宋体 "><font style="FONT-SIZE: 9pt;">转入的</font></font><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">DWG</font></font><font face="宋体 "><font style="FONT-SIZE: 9pt;">文件路径</font></font><font style="FONT-SIZE: 9pt;"></font><br/><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">pszJpgFilePath<br/></font></font><font face="宋体 "><font style="FONT-SIZE: 9pt;">另存为的</font></font><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">Jpg</font></font><font face="宋体 "><font style="FONT-SIZE: 9pt;">文件路径</font></font><font style="FONT-SIZE: 9pt;"></font><br/><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">iWidth<br/></font></font><font face="宋体 "><font style="FONT-SIZE: 9pt;">保存后的</font></font><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">Jpg</font></font><font face="宋体 "><font style="FONT-SIZE: 9pt;">文件的像素宽度</font></font><font style="FONT-SIZE: 9pt;"></font><br/><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">iHeight <br/></font></font><font face="宋体 "><font style="FONT-SIZE: 9pt;">保存后的</font></font><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">Jpg</font></font><font face="宋体 "><font style="FONT-SIZE: 9pt;">文件的像素高度</font></font><font style="FONT-SIZE: 9pt;"></font><br/><font style="FONT-SIZE: 9pt;"><font face="Times New Roman "></font></font><br/><strong><font size="2"><font color="#666699"><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">VC</font></font><font face="宋体 "><font style="FONT-SIZE: 9pt;">调用</font></font><font face="宋体 ">参考</font><font face="宋体 "><font style="FONT-SIZE: 9pt;">例程:</font></font><font style="FONT-SIZE: 9pt;"></font></font></font></strong><br/><p align="left"></p><p align="left"><font face="System "><font style="FONT-SIZE: 10pt;"></font></font></p><p></p><font face="Verdana ">void CTestDlg::OnBnClickedDwgtojpgButton()</font><br/><font face="Verdana ">{</font><br/><font face="Verdana "><br/>// TODO:</font><br/><font face="Verdana "></font><br/><font face="Verdana "><br/>CPreviewFileDialog openDlg(TRUE,_T("dwg"),NULL,</font><br/><font face="Verdana "><br/>OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,</font><br/><font face="Verdana "><br/>//_T("dwg(*.dwg) | *.dwg||"),</font><br/><font face="Verdana "><br/>_T("DWG files (*.dwg)|*.dwg|DXF files (*.dxf)|*.dxf|Jpg files (*.jpg)|*.jpg|BMP files (*.bmp)|*.bmp||"),</font><br/><font face="Verdana "><br/>this);</font><br/><font face="Verdana "></font><br/><font face="Verdana "><br/>CString sDwgFileName;</font><br/><font face="Verdana "><br/>if(openDlg.DoModal() == IDOK)</font><br/><font face="Verdana "><br/>{</font><br/><font face="Verdana "><br/>sDwgFileName = openDlg.GetPathName();</font><br/><font face="Verdana "><br/>}</font><br/><font face="Verdana "><br/>else</font><br/><font face="Verdana "><br/>{</font><br/><font face="Verdana "><br/>return;</font><br/><font face="Verdana "><br/>}</font><br/><font face="Verdana "></font><br/><font face="Verdana "><br/>//</font><br/><font face="Verdana "><br/>CString sJpgFilePath;</font><br/><font face="Verdana "><br/>CFileDialog openJpgDlg(FALSE,_T("jpg"),NULL,</font><br/><font face="Verdana "><br/>OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,</font><br/><font face="Verdana "><br/>_T("jpg(*.jpg) | *.jpg||"),</font><br/><font face="Verdana "><br/>this);</font><br/><font face="Verdana "><br/>if(openJpgDlg.DoModal() == IDOK)</font><br/><font face="Verdana "><br/>{</font><br/><font face="Verdana "><br/>sJpgFilePath = openJpgDlg.GetPathName();</font><br/><font face="Verdana "><br/>}</font><br/><font face="Verdana "><br/>else</font><br/><font face="Verdana "><br/>{</font><br/><font face="Verdana "><br/>return;</font><br/><font face="Verdana "><br/>}</font><br/><font face="Verdana "></font><br/><font face="Verdana "><br/>// 1000</font><font face="宋体 ">,</font><font face="Verdana ">1000</font><font face="宋体 ">是转成</font><font face="Verdana ">jpg</font><font face="宋体 ">的像素宽度和高度。</font><br/><font face="Verdana "><br/>if(MxDraw:wgToJpg(sDwgFileName,sJpgFilePath,1000,1000) )</font><br/><font face="Verdana "><br/>{</font><br/><font face="Verdana "><br/>AfxMessageBox(_T("</font><font face="宋体 ">转换成功</font><font face="Verdana ">"));</font><br/><font face="Verdana "><br/>}</font><br/><font face="Verdana "><br/>else</font><br/><font face="Verdana "><br/>{</font><br/><font face="Verdana "><br/>AfxMessageBox(_T("</font><font face="宋体 ">转换失败</font><font face="Verdana ">"));</font><br/><font face="Verdana "><br/>}</font><br/><font face="Verdana "></font><br/><font face="Verdana ">}</font><br/><br/><font face="Times New Roman "></font><br/><strong><font size="2"><font color="#666699"><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">C# </font></font><font face="宋体 "><font style="FONT-SIZE: 9pt;">调用</font></font><font face="宋体 ">参考</font><font face="宋体 "><font style="FONT-SIZE: 9pt;">例程:</font></font><font style="FONT-SIZE: 9pt;"></font></font></font></strong><br/><font face="Verdana ">private void DwgToJpg_Click(object sender, EventArgs e)</font><br/><font face="Verdana "><br/>{</font><br/><font size="2"><font face="Verdana ">// </font><font face="宋体 ">创建一个应用对象</font></font><br/><font face="Verdana "><br/><br/>MxDrawApplication app = new MxDrawApplication();</font><br/><font face="Verdana "></font><br/><font face="Verdana "><br/>OpenFileDialog ofd = new OpenFileDialog();</font><br/><font face="Verdana "><br/>ofd.Filter = "Dwg </font><font face="宋体 ">文件</font><font face="Verdana ">(*.Dwg)|*.Dwg|Dxf files (*.Dxf)|*.dxf";</font><br/><font face="Verdana "></font><br/><font face="Verdana "><br/>if (ofd.ShowDialog() != DialogResult.OK)</font><br/><font face="Verdana "><br/>{</font><br/><font face="Verdana "><br/>return;</font><br/><font face="Verdana "><br/>}</font><br/><font face="Verdana "></font><br/><font face="Verdana "><br/>SaveFileDialog sfd = new SaveFileDialog();</font><br/><font face="Verdana "><br/>sfd.Filter = "jpg </font><font face="宋体 ">文件</font><font face="Verdana ">(*.jpg)|*.jpg";</font><br/><font face="Verdana "></font><br/><font face="Verdana "><br/>if (sfd.ShowDialog() != DialogResult.OK)</font><br/><font face="Verdana "><br/>{</font><br/><font face="Verdana "><br/>return;</font><br/><font face="Verdana "><br/>}</font><br/><font face="Verdana "></font><br/><font size="2"><font face="Verdana ">// 1000</font><font face="宋体 ">,</font><font face="Verdana ">1000</font><font face="宋体 ">是转成</font><font face="Verdana ">jpg</font><font face="宋体 ">的像素宽度和高度。</font></font><br/><font face="Verdana "><br/>if(app.DwgToJpg(ofd.FileName, sfd.FileName, 1000, 1000) )</font><br/><font face="Verdana "><br/>{</font><br/><font face="Verdana "></font><br/><font face="Verdana "><br/>MessageBox.Show("</font><font face="宋体 ">转换成功</font><font face="Verdana ">");</font><br/><font face="Verdana "><br/>}</font><br/><font face="Verdana "><br/>else</font><br/><font face="Verdana "><br/>{</font><br/><font face="Verdana "><br/>MessageBox.Show("</font><font face="宋体 ">转换失败</font><font face="Verdana ">");</font><br/><font face="Verdana "><br/>}</font><br/><font face="Verdana "></font><br/><font face="Verdana "><br/>}</font><br/><font face="Verdana "><br/>}</font><br/><font face="Verdana "></font><br/><br/><font face="Verdana "><font face="Verdana "><font size="3">1.3</font></font><br/></font><font face="Verdana "><font size="3">WriteJpg</font></font><font face="宋体 "> 使用控件打开</font><font face="Times New Roman ">dwg</font><font face="宋体 ">文件或经过了编辑后,调用该函数把它另存为</font><font face="Times New Roman ">Jpg</font><font face="宋体 ">文件。</font><br/><font face="Times New Roman "></font><br/><strong><font size="2"><font color="#666699"><font face="Times New Roman ">VC</font><font face="宋体 ">接口:</font></font></font></strong><br/><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">BOOL <br/></font></font><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">MxDraw</font></font></u><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">::WriteJpg(</font></font><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">MXDRAWOCXHANDLE</font></font></u><font style="FONT-SIZE: 9pt;"><font face="Times New Roman "> hOcx,</font></font><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">LPCTSTR </font></font></u><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">pszJpgFilePath,</font></font><br/><font style="FONT-SIZE: 9pt;"><font face="Times New Roman "> </font></font><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">int</font></font></u><font style="FONT-SIZE: 9pt;"><font face="Times New Roman "> iWidth = -1,</font></font><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">int</font></font></u><font style="FONT-SIZE: 9pt;"><font face="Times New Roman "> iHeight = -1);</font></font><br/><strong><font size="2"><font color="#666699"><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">COM </font></font><font face="宋体 "><font style="FONT-SIZE: 9pt;">接口:</font></font><font style="FONT-SIZE: 9pt;"></font></font></font></strong><br/><p align="left"></p><p align="left"><font face="宋体 "><font style="FONT-SIZE: 10pt;">public virtual </font></font><strong><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">bool</font></font></u></strong><font face="宋体 "><font style="FONT-SIZE: 10pt;"><br/> <strong>SaveJpgFile</strong>(</font></font><strong><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">string</font></font></u></strong><font face="宋体 "><font style="FONT-SIZE: 10pt;"><br/> <i>pszJpgFilePath<strong>, </strong></font></font><strong><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">int</font></font></u></strong><font face="宋体 "><font style="FONT-SIZE: 10pt;"><br/> lWidth<strong>, </strong></font></font><strong><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">int</font></font></u></strong><font face="宋体 "><font style="FONT-SIZE: 10pt;"><br/> lHeight)</font></font></p><p></p><font face="宋体 "><font style="FONT-SIZE: 10pt;"><strong><br/><br/></strong></font></font><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">AxMxDrawXLib</font></font></u><font face="宋体 "><font style="FONT-SIZE: 10pt;"><strong>.</strong></font></font><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">AxMxDrawX</font></font></u><strong><font face="宋体 "><font style="FONT-SIZE: 10pt;"> 的成员</font></font><font style="FONT-SIZE: 9pt;"></font></strong><br/><strong><font size="2"><font color="#666699"><font face="宋体 "><font style="FONT-SIZE: 9pt;">参数:</font></font><font style="FONT-SIZE: 9pt;"></font></font></font></strong><br/><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">hOcx<br/></font></font><font face="宋体 "><font style="FONT-SIZE: 9pt;">控件的标识句柄</font></font><font style="FONT-SIZE: 9pt;"></font><br/><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">pszJpgFilePath<br/></font></font><font face="宋体 "><font style="FONT-SIZE: 9pt;">保存的</font></font><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">Jpg</font></font><font face="宋体 "><font style="FONT-SIZE: 9pt;">文件路径</font></font><font style="FONT-SIZE: 9pt;"></font><br/><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">lWidth<br/></font></font><font face="宋体 "><font style="FONT-SIZE: 9pt;">保存后的</font></font><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">Jpg</font></font><font face="宋体 "><font style="FONT-SIZE: 9pt;">文件像素宽度</font></font><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">,</font></font><font face="宋体 "><font style="FONT-SIZE: 9pt;">取默认值</font></font><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">-1,</font></font><font face="宋体 "><font style="FONT-SIZE: 9pt;">程序就自动取</font></font><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">4000</font></font><br/><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">lHeight<br/></font></font><font face="宋体 "><font style="FONT-SIZE: 9pt;">保存后的</font></font><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">Jpg</font></font><font face="宋体 "><font style="FONT-SIZE: 9pt;">文件像素高度</font></font><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">,</font></font><font face="宋体 "><font style="FONT-SIZE: 9pt;">取默认值</font></font><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">-1,</font></font><font face="宋体 "><font style="FONT-SIZE: 9pt;">程序就自动取</font></font><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">4000</font></font><br/><font style="FONT-SIZE: 9pt;"><font face="Times New Roman "></font></font><br/><font face="Verdana "><font face="Verdana "><font size="3">1.4</font></font><br/></font><font face="Verdana "><font size="3">WriteBmp</font></font><font face="宋体 "> 使用控件打开</font><font face="Times New Roman ">dwg</font><font face="宋体 ">文件或经过了编辑后,调用该函数把它另存为</font><font face="Times New Roman ">Bmp</font><font face="宋体 ">文件。</font><br/><font face="Times New Roman "></font><br/><strong><font size="2"><font color="#666699"><font face="Times New Roman ">VC</font><font face="宋体 ">接口:</font></font></font></strong><br/><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">BOOL <br/></font></font><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">MxDraw</font></font></u><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">::WriteBmp(</font></font><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">MXDRAWOCXHANDLE</font></font></u><font style="FONT-SIZE: 9pt;"><font face="Times New Roman "> hOcx,</font></font><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">LPCTSTR </font></font></u><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">pszBmpFilePath,</font></font><br/><font style="FONT-SIZE: 9pt;"><font face="Times New Roman "> </font></font><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">int</font></font></u><font style="FONT-SIZE: 9pt;"><font face="Times New Roman "> iWidth = -1,</font></font><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">int</font></font></u><font style="FONT-SIZE: 9pt;"><font face="Times New Roman "> iHeight = -1);</font></font><br/><font style="FONT-SIZE: 9pt;"><font face="Times New Roman "></font></font><br/><strong><font size="2"><font color="#666699"><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">COM </font></font><font face="宋体 "><font style="FONT-SIZE: 9pt;">接口:</font></font><font style="FONT-SIZE: 9pt;"></font></font></font></strong><br/><p align="left"></p><p align="left"><font face="宋体 "><font style="FONT-SIZE: 10pt;">public virtual </font></font><strong><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">bool</font></font></u></strong><font face="宋体 "><font style="FONT-SIZE: 10pt;"><br/> <strong>SaveBmpFile</strong>(</font></font><strong><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">string</font></font></u></strong><font face="宋体 "><font style="FONT-SIZE: 10pt;"><br/> pszBmpFilePath<strong>, </strong></font></font><strong><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">int</font></font></u></strong><font face="宋体 "><font style="FONT-SIZE: 10pt;"><br/> lWidth<strong>, </strong></font></font><strong><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">int</font></font></u></strong><font face="宋体 "><font style="FONT-SIZE: 10pt;"><br/> lHeight)</font></font></p><p></p><font face="宋体 "><font style="FONT-SIZE: 10pt;"><br/></font></font><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">AxMxDrawXLib</font></font></u><font face="宋体 "><font style="FONT-SIZE: 10pt;"><strong>.</strong></font></font><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">AxMxDrawX</font></font></u><strong><br/><font face="宋体 "><font style="FONT-SIZE: 10pt;">的成员</font></font><font style="FONT-SIZE: 9pt;"></font></strong><br/><strong><font size="2"><font color="#666699"><font face="宋体 "><font style="FONT-SIZE: 9pt;">参数:</font></font><font style="FONT-SIZE: 9pt;"></font></font></font></strong><br/><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">hOcx<br/></font></font><font face="宋体 "><font style="FONT-SIZE: 9pt;">控件的标识句柄</font></font><font style="FONT-SIZE: 9pt;"></font><br/><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">pszJpgFilePath<br/></font></font><font face="宋体 "><font style="FONT-SIZE: 9pt;">保存的</font></font><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">Jpg</font></font><font face="宋体 "><font style="FONT-SIZE: 9pt;">文件路径</font></font><font style="FONT-SIZE: 9pt;"></font><br/><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">lWidth<br/></font></font><font face="宋体 "><font style="FONT-SIZE: 9pt;">保存后的</font></font><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">Jpg</font></font><font face="宋体 "><font style="FONT-SIZE: 9pt;">文件像素宽度</font></font><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">,</font></font><font face="宋体 "><font style="FONT-SIZE: 9pt;">取默认值</font></font><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">-1,</font></font><font face="宋体 "><font style="FONT-SIZE: 9pt;">程序就自动取</font></font><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">4000</font></font><br/><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">lHeight<br/></font></font><font face="宋体 "><font style="FONT-SIZE: 9pt;">保存后的</font></font><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">Jpg</font></font><font face="宋体 "><font style="FONT-SIZE: 9pt;">文件像素高度</font></font><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">,</font></font><font face="宋体 "><font style="FONT-SIZE: 9pt;">取默认值</font></font><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">-1,</font></font><font face="宋体 "><font style="FONT-SIZE: 9pt;">程序就自动取</font></font><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">4000</font></font><br/><font style="FONT-SIZE: 9pt;"><font face="Times New Roman "></font></font><br/><strong><font color="#666699"><font size="2"><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">VC</font></font><font face="宋体 "><font style="FONT-SIZE: 9pt;">调用</font></font><font face="宋体 ">参考</font><font face="宋体 "><font style="FONT-SIZE: 9pt;">例程:</font></font><font style="FONT-SIZE: 9pt;"></font></font></font></strong><br/><font face="Verdana "><font size="2">void CTestDlg::OnBnClickedSavebmpButton()</font></font><br/><font face="Verdana "><font size="2">{</font></font><br/><font size="2"><font face="Verdana "><br/>// TODO: </font><font face="宋体 ">在此添加控件通知处理程序代码</font></font><br/><font face="Verdana "><font size="2"><br/>CFileDialog openDlg(FALSE,_T("bmp"),NULL,</font></font><br/><font face="Verdana "><font size="2"><br/>OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,</font></font><br/><font face="Verdana "><font size="2"><br/>_T("bmp(*.bmp) | *.bmp||"),this);</font></font><br/><font face="Verdana "><font size="2"></font></font><br/><font face="Verdana "><font size="2"><br/>CString sFileName;</font></font><br/><font face="Verdana "><font size="2"><br/>if(openDlg.DoModal() == IDOK)</font></font><br/><font face="Verdana "><font size="2"><br/>{</font></font><br/><font face="Verdana "><font size="2"><br/>sFileName = openDlg.GetPathName();</font></font><br/><font face="Verdana "><font size="2"><br/>}</font></font><br/><font face="Verdana "><font size="2"><br/>else</font></font><br/><font face="Verdana "><font size="2"><br/>{</font></font><br/><font face="Verdana "><font size="2"><br/>return;</font></font><br/><font face="Verdana "><font size="2"><br/>}</font></font><br/><font face="Verdana "><font size="2"></font></font><br/><font face="Verdana "><font size="2"><br/>if(!MxDraw::WriteBmp(m_hDrawOcx,sFileName) )</font></font><br/><font face="Verdana "><font size="2"><br/>{</font></font><br/><font face="Verdana "><font size="2"><br/>CString sError;</font></font><br/><font face="Verdana "><font size="2"><br/>if(MxDraw::GetLastError().IsEmpty() )</font></font><br/><font size="2"><font face="Verdana "><br/>sError = _T("</font><font face="宋体 ">保存位图文件失败</font><font face="Verdana ">!");</font></font><br/><font face="Verdana "><font size="2"><br/>else</font></font><br/><font size="2"><font face="Verdana "><br/>sError.Format(_T("</font><font face="宋体 ">保存位图文件失败</font><font face="Verdana ">!</font><font face="宋体 ">原因为:</font><font face="Verdana ">%s"),MxDraw::GetLastError());</font></font><br/><font face="Verdana "><font size="2"><br/>AfxMessageBox(sError);</font></font><br/><font face="Verdana "><font size="2"><br/>}</font></font><br/><font face="Verdana "><font size="2"><br/>else</font></font><br/><font face="Verdana "><font size="2"><br/>{</font></font><br/><font size="2"><font face="Verdana "><br/>AfxMessageBox(_T("</font><font face="宋体 ">保存成功</font><font face="Verdana ">"));</font></font><br/><font size="2"><font face="Verdana "><br/>}</font></font><br/><font face="Verdana "><font size="2">}</font></font><br/><br/><font face="Verdana "><font face="Verdana "><font size="3">1.5</font></font><br/></font><font face="Verdana "><font size="3">DrawToDc</font></font><font face="宋体 "> 绘制控件当前图形中指定区域到</font><font face="Times New Roman ">CDC</font><font face="宋体 ">对象中。</font><br/><strong><font size="2"><font color="#666699"><font face="Times New Roman ">VC</font><font face="宋体 ">接口:</font></font></font></strong><br/><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">BOOL </font></font><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">MxDraw</font></font></u><font face="宋体 "><font style="FONT-SIZE: 9pt;">::</font></font><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">DrawToDc(</font></font><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">MXDRAWOCXHANDLE</font></font></u><font style="FONT-SIZE: 9pt;"><font face="Times New Roman "> hOcx,</font></font><br/><font style="FONT-SIZE: 9pt;"><font face="Times New Roman "> </font></font><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">CDC</font></font></u><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">* pDC,</font></font><br/><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">int</font></font></u><font style="FONT-SIZE: 9pt;"><font face="Times New Roman "> iDCx</font></font><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">,int</font></font></u><font style="FONT-SIZE: 9pt;"><font face="Times New Roman "> iDCy,</font></font><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">int</font></font></u><font style="FONT-SIZE: 9pt;"><font face="Times New Roman "> iDCWidth</font></font><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">,int</font></font></u><font style="FONT-SIZE: 9pt;"><font face="Times New Roman "> iDCHeight,</font></font><br/><font style="FONT-SIZE: 9pt;"><font face="Times New Roman "> </font></font><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">double</font></font></u><font style="FONT-SIZE: 9pt;"><font face="Times New Roman "> dLbx,</font></font><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">double</font></font></u><font style="FONT-SIZE: 9pt;"><font face="Times New Roman "> dLby,</font></font><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">double</font></font></u><font style="FONT-SIZE: 9pt;"><font face="Times New Roman "> dRtx</font></font><u><font face="宋体 "><font style="FONT-SIZE: 10pt;">,double</font></font></u><font style="FONT-SIZE: 9pt;"><font face="Times New Roman "> dRty</font></font><br/><font style="FONT-SIZE: 9pt;"><font face="Times New Roman "><br/>);</font></font><br/><font face="宋体 "><strong><font size="2"><font color="#666699">参数:</font></font></strong></font><br/><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">hOcx<br/><br/><br/><br/></font></font><font face="宋体 "><font style="FONT-SIZE: 9pt;">标识控件的句柄</font></font><font style="FONT-SIZE: 9pt;"></font><br/><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">pDC<br/><br/></font></font><font face="宋体 "><font style="FONT-SIZE: 9pt;">把指定区域的图形中的内容绘制到</font></font><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">pDC</font></font><font face="宋体 "><font style="FONT-SIZE: 9pt;">上</font></font><font style="FONT-SIZE: 9pt;"></font><br/><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">iDCx, iDCy<br/></font></font><font face="宋体 "><font style="FONT-SIZE: 9pt;">绘制</font></font><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">pDC</font></font><font face="宋体 "><font style="FONT-SIZE: 9pt;">的左上角位置</font></font><font style="FONT-SIZE: 9pt;"></font><br/><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">iDCWidth,iDCHeight<br/></font></font><font face="宋体 "><font style="FONT-SIZE: 9pt;">绘制到</font></font><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">pDC</font></font><font face="宋体 "><font style="FONT-SIZE: 9pt;">上的宽度和高度</font></font><font style="FONT-SIZE: 9pt;"></font><br/><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">dLbx, dLby<br/></font></font><font face="宋体 "><font style="FONT-SIZE: 9pt;">指定图形区域的左下角坐标</font></font><font style="FONT-SIZE: 9pt;"></font><br/><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">dRtx, dRty<br/></font></font><font face="宋体 "><font style="FONT-SIZE: 9pt;">指定图形区域的右下角坐标</font></font><font style="FONT-SIZE: 9pt;"></font><br/><font style="FONT-SIZE: 9pt;"><font face="Times New Roman "></font></font><br/><strong><font color="#666699"><font size="2"><font style="FONT-SIZE: 9pt;"><font face="Times New Roman ">VC</font></font><font face="宋体 "><font style="FONT-SIZE: 9pt;">参考例程:</font></font><font style="FONT-SIZE: 9pt;"></font></font></font></strong><br/><font face="Verdana "><font size="2"></font></font><br/><strong><font face="Verdana "><font size="2">void CTestCommands:<img border="0" alt="" src="http://www.mxdraw.com/images/smilies/default/biggrin.gif" smilieid="3"/>rawToBmp()</font></font></strong><br/><font face="Verdana "><font size="2">{</font></font><br/><font size="2"><font face="Verdana "><br/>// </font><font face="宋体 ">选择让用从图上选择个存位图的区域。</font></font><br/><font size="2"><font face="Verdana "><br/>acutPrintf(_T("\n </font><font face="宋体 ">请点取存位图的区域:</font><font face="Verdana ">"));</font></font><br/><font face="Verdana "><font size="2"></font></font><br/><font size="2"><font face="Verdana "><br/>// </font><font face="宋体 ">动态拖放输入,让用户确定要保存的区域</font></font><br/><font face="Verdana "><font size="2"><br/>CRectSelJig getRect;</font></font><br/><font face="Verdana "><font size="2"> </font></font><br/><font size="2"><font face="Verdana "><br/>// pt1,pt2</font><font face="宋体 ">是矩形框的两点</font></font><br/><font face="Verdana "><font size="2"><br/>AcGePoint3d pt1,pt2;</font></font><br/><font face="Verdana "><font size="2"><br/>if(!getRect.DoIt(pt1,pt2) )</font></font><br/><font face="Verdana "><font size="2"><br/>return;</font></font><br/><font face="Verdana "><font size="2"></font></font><br/><font size="2"><font face="Verdana "><br/>// </font><font face="宋体 ">让用户选择保存的位图文件</font><font face="Verdana ">.</font></font><br/><font face="Verdana "><font size="2"><br/>CTestDlg* pDlg = (CTestDlg*)AfxGetApp()->GetMainWnd();</font></font><br/><font face="Verdana "><font size="2"><br/>CFileDialog openDlg(FALSE,_T("bmp"),NULL,</font></font><br/><font face="Verdana "><font size="2"><br/>OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,</font></font><br/><font face="Verdana "><font size="2"><br/>_T("bmp(*.bmp) | *.bmp||"),</font></font><br/><font face="Verdana "><font size="2"><br/>pDlg);</font></font><br/><font face="Verdana "><font size="2"></font></font><br/><font face="Verdana "><font size="2"><br/>CString sFileName;</font></font><br/><font face="Verdana "><font size="2"><br/>if(openDlg.DoModal() == IDOK)</font></font><br/><font face="Verdana "><font size="2"><br/>{</font></font><br/><font face="Verdana "><font size="2"><br/>sFileName = openDlg.GetPathName();</font></font><br/><font face="Verdana "><font size="2"><br/>}</font></font><br/><font face="Verdana "><font size="2"><br/>else</font></font><br/><font face="Verdana "><font size="2"><br/>{</font></font><br/><font face="Verdana "><font size="2"><br/>return;</font></font><br/><font face="Verdana "><font size="2"><br/>}</font></font><br/><font face="Verdana "><font size="2"></font></font><br/><font face="Verdana "><font size="2"><br/>int iBmpWidth<br/>= 1000;</font></font><br/><font face="Verdana "><font size="2"><br/>int iBmpHeight = 500;</font></font><br/><font face="Verdana "><font size="2"></font></font><br/><font size="2"><font face="Verdana "><br/>// </font><font face="宋体 ">开始保存文件</font><font face="Verdana ">.</font></font><br/><font face="Verdana "><font size="2"><br/>CDC dc;</font></font><br/><font face="Verdana "><font size="2"><br/>dc.Attach(::GetDC(NULL));</font></font><br/><font face="Verdana "><font size="2"></font></font><br/><font face="Verdana "><font size="2"><br/>CBitmap bm;</font></font><br/><font face="Verdana "><font size="2"><br/>bm.CreateCompatibleBitmap(&dc,iBmpWidth,iBmpHeight);</font></font><br/><font face="Verdana "><font size="2"></font></font><br/><font face="Verdana "><font size="2"><br/>CDC tmpDc;</font></font><br/><font face="Verdana "><font size="2"><br/>tmpDc.CreateCompatibleDC(&dc);</font></font><br/><font face="Verdana "><font size="2"><br/>CBitmap*pOld = tmpDc.SelectObject(&bm);</font></font><br/><font face="Verdana "><font size="2"></font></font><br/><font face="Verdana "><font size="2"><br/>if(MxDraw:<img border="0" alt="" src="http://www.mxdraw.com/images/smilies/default/biggrin.gif" smilieid="3"/>rawToDc(MxDraw::GetCurOcxHandle(),</font></font><br/><font face="Verdana "><font size="2"><br/>&tmpDc,0,0,iBmpWidth,iBmpHeight,</font></font><br/><font face="Verdana "><font size="2"><br/>pt1.x,pt1.y,pt2.x,pt2.y</font></font><br/><font face="Verdana "><font size="2"><br/>)</font></font><br/><font face="Verdana "><font size="2"><br/>)</font></font><br/><font face="Verdana "><font size="2"><br/>{</font></font><br/><font face="Verdana "><font size="2"><br/>tmpDc.SelectObject(pOld);</font></font><br/><font face="Verdana "><font size="2"><br/>if(SaveBmp(&bm,&dc,sFileName) )</font></font><br/><font face="Verdana "><font size="2"><br/>{</font></font><br/><font size="2"><font face="Verdana "><br/>AfxMessageBox(_T("</font><font face="宋体 ">保存成功</font><font face="Verdana ">"));</font></font><br/><font face="Verdana "><font size="2"><br/>}</font></font><br/><font face="Verdana "><font size="2"><br/>else</font></font><br/><font face="Verdana "><font size="2"><br/>{</font></font><br/><font size="2"><font face="Verdana "><br/>AfxMessageBox(_T("</font><font face="宋体 ">保存失败</font><font face="Verdana ">"));</font></font><br/><font face="Verdana "><font size="2"><br/>}</font></font><br/><font face="Verdana "><font size="2"></font></font><br/><font face="Verdana "><font size="2"><br/>}</font></font><br/><font face="Verdana "><font size="2"><br/>else</font></font><br/><font face="Verdana "><font size="2"><br/>{</font></font><br/><font size="2"><font face="Verdana "><br/>AfxMessageBox(_T("</font><font face="宋体 ">未知原因,保存失败</font><font face="Verdana ">"));</font></font><br/><font face="Verdana "><font size="2"><br/>tmpDc.SelectObject(pOld);</font></font><br/><font face="Verdana "><font size="2"><br/>}</font></font><br/><font face="Verdana "><font size="2">}</font></font><br/><font face="Verdana "><font size="2"></font></font><br/><font face="Verdana "><font size="2"></font></font><br/><strong><font face="Verdana "><font size="2">bool CTestCommands::SaveBmp(CBitmap* pBmp,CDC* pDc,const CString& sBmpFilePath)</font></font></strong><br/><font face="Verdana "><font size="2">{</font></font><br/><font face="Verdana "><font size="2"><br/>if(sBmpFilePath.IsEmpty() )</font></font><br/><font face="Verdana "><font size="2"><br/>{</font></font><br/><font size="2"><font face="Verdana "><br/>AfxMessageBox(_T("</font><font face="宋体 ">文件路径为空</font><font face="Verdana ">"));</font></font><br/><font face="Verdana "><font size="2"><br/>return false;</font></font><br/><font face="Verdana "><font size="2"><br/>}</font></font><br/><font face="Verdana "><font size="2"><br/>BITMAP btm;</font></font><br/><font face="Verdana "><font size="2"><br/>pBmp->GetBitmap(&btm);</font></font><br/><font face="Verdana "><font size="2"></font></font><br/><font face="Verdana "><font size="2"><br/>DWORD size<br/>= btm.bmWidthBytes * btm.bmHeight;</font></font><br/><font face="Verdana "><font size="2"><br/>LPSTR lpData = (LPSTR)GlobalAlloc(GPTR,size);</font></font><br/><font face="Verdana "><font size="2"><br/>/////////////////////////////////////////////</font></font><br/><font face="Verdana "><font size="2"><br/>BITMAPINFOHEADER bih;</font></font><br/><font face="Verdana "><font size="2"><br/>bih.biBitCount=btm.bmBitsPixel;</font></font><br/><font face="Verdana "><font size="2"><br/>bih.biClrImportant=0;</font></font><br/><font face="Verdana "><font size="2"><br/>bih.biClrUsed=0;</font></font><br/><font face="Verdana "><font size="2"><br/>bih.biCompression=0;</font></font><br/><font face="Verdana "><font size="2"><br/>bih.biHeight=btm.bmHeight;</font></font><br/><font face="Verdana "><font size="2"><br/>bih.biPlanes=1;</font></font><br/><font face="Verdana "><font size="2"><br/>bih.biSize=sizeof(BITMAPINFOHEADER);</font></font><br/><font face="Verdana "><font size="2"><br/>bih.biSizeImage=size;</font></font><br/><font face="Verdana "><font size="2"><br/>bih.biWidth=btm.bmWidth;</font></font><br/><font face="Verdana "><font size="2"><br/>bih.biXPelsPerMeter=0;</font></font><br/><font face="Verdana "><font size="2"><br/>bih.biYPelsPerMeter=0;</font></font><br/><font face="Verdana "><font size="2"><br/>///////////////////////////////////</font></font><br/><font face="Verdana "><font size="2"><br/>GetDIBits(pDc->GetSafeHdc(),*pBmp,0,bih.biHeight,lpData,(BITMAPINFO*)&bih,DIB_RGB_COLORS);</font></font><br/><font face="Verdana "><font size="2"></font></font><br/><font face="Verdana "><font size="2"><br/>BITMAPFILEHEADER bfh;</font></font><br/><font face="Verdana "><font size="2"><br/>bfh.bfReserved1=bfh.bfReserved2=0;</font></font><br/><font face="Verdana "><font size="2"><br/>bfh.bfType=((WORD)('M'<< 8)|'B');</font></font><br/><font face="Verdana "><font size="2"><br/>bfh.bfSize=54+size;</font></font><br/><font face="Verdana "><font size="2"><br/>bfh.bfOffBits=54;</font></font><br/><font face="Verdana "><font size="2"><br/>bool isSuc = false;</font></font><br/><font face="Verdana "><font size="2"><br/>CFile bf;</font></font><br/><font face="Verdana "><font size="2"><br/>if(bf.Open(sBmpFilePath,CFile::modeCreate|CFile::modeWrite))</font></font><br/><font face="Verdana "><font size="2"><br/>{</font></font><br/><font face="Verdana "><font size="2"><br/>bf.Write(&bfh,sizeof(BITMAPFILEHEADER));</font></font><br/><font face="Verdana "><font size="2"><br/>bf.Write(&bih,sizeof(BITMAPINFOHEADER));</font></font><br/><font face="Verdana "><font size="2"><br/>bf.Write(lpData,size);</font></font><br/><font face="Verdana "><font size="2"><br/>bf.Close();</font></font><br/><font face="Verdana "><font size="2"><br/>isSuc = true;</font></font><br/><font face="Verdana "><font size="2"><br/>}</font></font><br/><font face="Verdana "><font size="2"><br/>else</font></font><br/><font face="Verdana "><font size="2"><br/>{</font></font><br/><font size="2"><font face="Verdana "><br/>AfxMessageBox(_T("</font><font face="宋体 ">创建文件失败</font><font face="Verdana ">"));</font></font><br/><font face="Verdana "><font size="2"><br/>}</font></font><br/><font face="Verdana "><font size="2"><br/>GlobalFree(lpData);</font></font><br/><font face="Verdana "><font size="2"><br/>return isSuc;</font></font><br/><font face="Verdana "><font size="2">}</font></font><br/></div> mark好,有空再来 怎么使用,有方法吗?我还不知道
页:
[1]