设为首页 加入收藏

TOP

17.6.1 获取文档的总尺寸
2013-10-07 16:12:49 来源: 作者: 【 】 浏览:65
Tags:17.6.1 获取 文档 尺寸

17.6.1  获取文档的总尺寸

要知道一个特定的文档占用多少页,需要知道草图有多大,因此我们希望使用矩形来包围文档中的所有内容。通过在文档类CSketcherDoc中添加函数GetDocExtent(),可以很容易做到这一点。在CSketcherDoc的public接口中添加下列声明:

  1. CRect GetDocExtent() const;     // Get the bounding rectangle for the whole document 

这个函数的实现也没有问题。它的实现代码是:
 

  1. // Get the rectangle enclosing the entire document  
  2. CRect CSketcherDoc::GetDocExtent()const  
  3. {  
  4. if(m_Sketch.empty())                                                                                                                            // Check for empty sketch  
  5. return CRect(0,0,1,1);  
  6. CRect docExtent(m_Sketch.front()->GetEnclosingRect());  // Initial doc extent  
  7. for(auto& pElement : m_Sketch)  
  8. docExtent.UnionRect(docExtent, pElement->GetEnclosingRect());  
  9. docExtent.NormalizeRect();  
  10. return docExtent;  
  11. }  

可以在SketcherDoc.cpp文件中添加这个函数定义。

如果草图为空,就返回一个非常小的CRect对象。文档范围的最初尺寸是封闭列表中第一个元素的矩形。接着,此过程循环访问文档中的每个元素,获取每个元素的边界矩形,并将它与docExtent合并。CRect类的成员UnionRect()包含两个作为参数传递的矩形,它将计算最小的矩形,然后把这个值放在调用该函数的CRect对象中。因此,DocExtent的大小将不断增加,直到把所有元素都包含在内部。
 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇17.6 实现多页打印 下一篇17.6.2 存储打印数据

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·数据库:推荐几款 Re (2025-12-25 12:17:11)
·如何最简单、通俗地 (2025-12-25 12:17:09)
·什么是Redis?为什么 (2025-12-25 12:17:06)
·对于一个想入坑Linux (2025-12-25 11:49:07)
·Linux 怎么读? (2025-12-25 11:49:04)