设为首页 加入收藏

TOP

17.6.5 准备设备上下文
2013-10-07 16:14:13 来源: 作者: 【 】 浏览:64
Tags:17.6.5 准备 设备 上下文

17.6.5  准备设备上下文

考虑到缩放比例,这时Sketcher程序将调用视图对象的OnPrepareDC()函数,把映射模式设置为MM_ANISOTROPIC。就打印而言,要正确地准备设备上下文,必须进行其他一些修改:

  1. void CSketcherView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo)  
  2. {  
  3. CScrollView::OnPrepareDC(pDC, pInfo);  
  4. CSketcherDoc* pDoc = GetDocument();  
  5. pDC->SetMapMode(MM_ANISOTROPIC);                                                // Set the map mode  
  6. CSize DocSize = pDoc->GetDocSize();                                     // Get the document size  
  7. pDC->SetWindowExt(DocSize);                                                                 // Now set the window extent  
  8. // Get the number of pixels per inch in x and y  
  9. int xLogPixels = pDC->GetDeviceCaps(LOGPIXELSX);  
  10. int yLogPixels = pDC->GetDeviceCaps(LOGPIXELSY);  
  11. // Calculate the viewport extent in x and y  
  12. int scale(pDC->IsPrinting()   1 : m_Scale); // If we are printing, use scale 1  
  13. int xExtent = (DocSize.cx*scale*xLogPixels)/100;  
  14. int yExtent = (DocSize.cy*scale*yLogPixels)/100;  
  15. pDC->SetViewportExt(xExtent, yExtent);                  // Set viewport extent  
  16. }  

对于到打印机以及屏幕的输出,框架将调用这个函数。在进行打印时,应当确保使用比例1来设置从逻辑坐标到设备坐标的映射。如果使一切保持原样,那么输出将采用当前视图比例,但是在计算需要多少页以及如何设置每一页的原点时,必须考虑比例的问题。

通过调用当前CDC对象的IsPrinting()成员函数,可以确定是否具有打印机设备上下文,如果正在打印,该函数将返回TRUE。在具有打印机设备上下文时,只需要把比例设置为1。当然,必须修改计算视区大小的语句,使它们使用视图的局部变量scale,而不是成员变量m_Scale。
 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇17.6.4 打印后的清除 下一篇17.6.6 打印文档(1)

评论

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

·数据库:推荐几款 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)