65.9K
CodeProject 正在变化。 阅读更多。
Home

单页打印框架

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.82/5 (8投票s)

2000年2月2日

viewsIcon

118317

downloadIcon

2064

单页打印框架

Sample Image - singlepage.jpg

引言

这个程序提供了一个单页打印程序的框架。它的特性包括:

  1. 具有缩放功能的所见即所得界面:从 75% 到 150%,以及FitWidthFitHeight 模式
  2. 允许用户使用页面设置对话框设置页边距
  3. 使用双缓冲来减少闪烁
  4. 当用户使用打印设置对话框更改页面大小时,自动更新页面大小
  5. 带有标记的标尺,标记会根据纸张的比例和位置而变化
  6. 文本滚动

为了满足您的绘图需求,请编辑TextBmpView.cpp 文件中的 DrawHere 方法。此函数将向您传递 3 个参数:

  1. PaperRect:纸张矩形,以逻辑坐标表示。
  2. PrintableRect:打印机将打印的区域(比纸张矩形略小)。
  3. MarginsRect:页边距矩形,以逻辑坐标表示。(此区域由用户定义,您可以选择忽略它。)
void CTextbmpView::DrawHere(CDC* pDC,CRect PaperRect, 
                            CRect PrintableRect,CRect MarginsRect) 
{ 
	/////////////////////////////////////////  
	//ADD Drawing code here!!!                 
}  

这 3 个参数会根据当前选择的纸张大小而变化,但不会根据当前的缩放模式而变化。您的代码必须根据给定的矩形区域内的这些尺寸进行绘制。您可以使用 MFC 绘图函数,如 DrawTextLineToCreateFont 等来创建您的绘图。

单位

  1. 单位是 twips(1 英寸 = 1440 twips),因此要绘制 1 英寸的线条,请执行以下操作:
    pDC->MoveTo(0,-2000); pDC->LineTo(1440,-2000);
  2. 大多数点的 y 值都是负数。点越低,y 值越小/越负。
  3. 原点 (0,0) 位于点状矩形(可打印区域)的左上角。A4 纸张的 PrintableRect 的典型值为 top = 0,left = 0,right = 11568,bottom = -15876。

显示

  1. 可打印区域由点状矩形表示。
  2. 纸张矩形由灰色背景中的白色区域表示。
  3. 页边距显示为标尺上的灰色区域。
  4. 要将屏幕上单击的点转换为纸张上的逻辑点,请使用 ScreenToPaper 方法。例如,请查看 CTextBmpView::OnLButtonDown 方法。还有另一个方法 PaperToScreen,它会将纸张上的点转换为屏幕上的点。

限制

此程序可能无法处理大尺寸纸张:例如 A3 尺寸的纸张

致谢

特别感谢 Joe Ismert 为 RulerBar 提供了 VC6.0 的修复。

许可证

本文没有明确的许可证附加到它,但可能包含文章文本或下载文件本身中的使用条款。如有疑问,请通过下面的讨论区联系作者。作者可能使用的许可证列表可以在 此处 找到。

© . All rights reserved.