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

📄 template.htm

📁 软件参考Windows操作系统下的画图程序
💻 HTM
📖 第 1 页 / 共 2 页
字号:
   </v:formulas>
   <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
   <o:lock v:ext="edit" aspectratio="t"/>
  </v:shapetype><v:shape id="_x0000_i1029" type="#_x0000_t75" style='width:299.25pt;
   height:210pt' o:ole="">
   <v:imagedata src="./template.files/image001.png" o:title=""/>
  </v:shape><![endif]--><![if !vml]><img border=0 width=399 height=280
  src="./template.files/image002.jpg" v:shapes="_x0000_i1029"><![endif]><!--[if gte mso 9]><xml>
   <o:OLEObject Type="Embed" ProgID="PBrush" ShapeID="_x0000_i1029"
    DrawAspect="Content" ObjectID="_1116847420">
   </o:OLEObject>
  </xml><![endif]--></span></p>
  <p class=MsoNormal align=center style='text-align:center;text-indent:18.0pt'>图<span
  lang=EN-US>1 图元类层次结构图</span></p>
  <p class=MsoNormal style='text-indent:18.0pt'><span lang=EN-US><span
  style='mso-tab-count:1'> </span>因此软件按照图1建立了各个类,其中几何图元类和两点图元类为虚基类.软件在其中定义了“绘制”这一纯虚函数.</span></p>
  <p class=MsoNormal style='text-indent:18.0pt'>事实上<span lang=EN-US>,软件的界面为了做得具有自身的特色,采用GDI编程,一点一点绘制出来的,没有借用Windows的控件.与这些自己绘制的“控件”相关的消息也都是自己实现的.其中工具箱上的各个图元也是采用上述这些图元类绘制的,就如视图区域中的绘制方法一样.</span></p>
  <p class=MsoNormal style='text-indent:18.0pt'>在视图区域作图<span lang=EN-US>,考虑到用户会绘制任意多的图元,因此软件采用STL(Standard
  Template Library)的vector动态记录图元;同时考虑各种图元绘制的次序问题,软件让每一图元具有次序属性.通过上述方法,软件最终实现了对任意多图元的任意次序绘制.最后,还实现了文件的保存和载入</span></p>
  <p class=MsoNormal><span lang=EN-US><br>
  功能介绍:软件参考Windows画图程序,实现对点/线/圆(椭圆)/矩形/多边形等等的绘制</span></p>
  <p class=MsoNormal><span lang=EN-US><br>
  界面图片:</span></p>
  <p><span lang=EN-US><!--[if gte vml 1]><v:shape id="_x0000_i1033" type="#_x0000_t75"
   style='width:414.75pt;height:309.75pt' o:ole="">
   <v:imagedata src="./template.files/image003.png" o:title=""/>
  </v:shape><![endif]--><![if !vml]><img border=0 width=553 height=413
  src="./template.files/image004.jpg" v:shapes="_x0000_i1033"><![endif]><!--[if gte mso 9]><xml>
   <o:OLEObject Type="Embed" ProgID="PBrush" ShapeID="_x0000_i1033"
    DrawAspect="Content" ObjectID="_1116847421">
   </o:OLEObject>
  </xml><![endif]--><br>
  部分关键代码 </span></p>
  <p><span lang=EN-US>BOOL CDrawingView::Draw(CDC &amp;dc)<o:p></o:p></span></p>
  <p><span lang=EN-US>{<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp; </span>CDC
  dcmem;<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp; </span>dcmem.CreateCompatibleDC(&amp;dc);<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp; </span>CRect
  rc;<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp; </span>GetClientRect(&amp;rc);<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp; </span>CBitmap
  bitmap;<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp; </span>bitmap.LoadBitmap(IDB_BITMAP1);<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp; </span>CBitmap*
  pOldBitmap = dcmem.SelectObject(&amp;bitmap);<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp; </span>BITMAP
  bmpInfo;<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp; </span>bitmap.GetBitmap(&amp;bmpInfo);<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp; </span>CDrawingDoc*
  pDoc = GetDocument();<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp; </span>BOOL
  m_isContinue = TRUE;<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp; </span>for(int
  count=0; count&lt;pDoc-&gt;m_slSum; count++)<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp; </span>{<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>m_isContinue
  = TRUE;<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>for(int
  i=0; i&lt;pDoc-&gt;point.size(); i++)<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>if(pDoc-&gt;point[i].GetOrderId()==count)<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:4'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>pDoc-&gt;point[i].Draw(dcmem);<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:4'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>m_isContinue
  = FALSE;<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:4'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>break;<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>if(!m_isContinue)<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>continue;<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>for(i=0;
  i&lt;pDoc-&gt;line.size(); i++)<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>if(pDoc-&gt;line[i].GetOrderId()==count)<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:4'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>pDoc-&gt;line[i].Draw(dcmem);<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:4'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>m_isContinue
  = FALSE;<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:4'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>break;<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>if(!m_isContinue)<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>continue;<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>for(i=0;
  i&lt;pDoc-&gt;rect.size(); i++)<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>if(pDoc-&gt;rect[i].GetOrderId()==count)<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:4'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>pDoc-&gt;rect[i].Draw(dcmem);<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:4'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>m_isContinue
  = FALSE;<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:4'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>break;<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>if(!m_isContinue)<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>continue;<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>for(i=0;
  i&lt;pDoc-&gt;circle.size(); i++)<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>if(pDoc-&gt;circle[i].GetOrderId()==count)<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:4'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>pDoc-&gt;circle[i].Draw(dcmem);<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:4'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>m_isContinue
  = FALSE;<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:4'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>break;<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>if(!m_isContinue)<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>continue;<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>for(i=0;
  i&lt;pDoc-&gt;polygon.size(); i++)<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>if(pDoc-&gt;polygon[i].GetOrderId()==count)<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:4'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>pDoc-&gt;polygon[i].Draw(dcmem);<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:4'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>break;<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp; </span>}<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp; </span>switch(m_nPickGeo)<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp; </span>{<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp; </span>case
  1:<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>m_preline.Draw(dcmem);<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>break;<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp; </span>case
  2:<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>m_prerect.Draw(dcmem);<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>break;<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp; </span>case
  3:<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>m_precircle.Draw(dcmem);<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>break;<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp; </span>case
  4:<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>if(m_polygonTmp.GetSize()&gt;=1)<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>m_polygonTmp.Draw(dcmem);<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>break;<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp; </span>}<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp; </span>dc.BitBlt(0,
  0, bmpInfo.bmWidth, bmpInfo.bmHeight, &amp;dcmem, 0, 0, SRCCOPY);<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp; </span>dcmem.SelectObject(pOldBitmap);<o:p></o:p></span></p>
  <p><span lang=EN-US><span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp; </span>return
  TRUE;<o:p></o:p></span></p>
  <p><span lang=EN-US>}</span></p>
  <p>其他信息: 详见代码</p>
  </td>
 </tr>
</table>

</div>

<p class=MsoNormal><span lang=EN-US><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></span></p>

</div>

</body>

</html>

⌨️ 快捷键说明

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