单页打印框架






3.82/5 (8投票s)
2000年2月2日

118317

2064
单页打印框架
引言
这个程序提供了一个单页打印程序的框架。它的特性包括:
- 具有缩放功能的所见即所得界面:从 75% 到 150%,以及
FitWidth
和FitHeight
模式 - 允许用户使用页面设置对话框设置页边距
- 使用双缓冲来减少闪烁
- 当用户使用打印设置对话框更改页面大小时,自动更新页面大小
- 带有标记的标尺,标记会根据纸张的比例和位置而变化
- 文本滚动
为了满足您的绘图需求,请编辑TextBmpView.cpp 文件中的 DrawHere
方法。此函数将向您传递 3 个参数:
PaperRect
:纸张矩形,以逻辑坐标表示。PrintableRect
:打印机将打印的区域(比纸张矩形略小)。MarginsRect
:页边距矩形,以逻辑坐标表示。(此区域由用户定义,您可以选择忽略它。)
void CTextbmpView::DrawHere(CDC* pDC,CRect PaperRect,
CRect PrintableRect,CRect MarginsRect)
{
/////////////////////////////////////////
//ADD Drawing code here!!!
}
这 3 个参数会根据当前选择的纸张大小而变化,但不会根据当前的缩放模式而变化。您的代码必须根据给定的矩形区域内的这些尺寸进行绘制。您可以使用 MFC 绘图函数,如 DrawText
、LineTo
、CreateFont
等来创建您的绘图。
单位
- 单位是 twips(1 英寸 = 1440 twips),因此要绘制 1 英寸的线条,请执行以下操作:
pDC->MoveTo(0,-2000); pDC->LineTo(1440,-2000);
- 大多数点的 y 值都是负数。点越低,y 值越小/越负。
- 原点 (0,0) 位于点状矩形(可打印区域)的左上角。A4 纸张的
PrintableRect
的典型值为 top = 0,left = 0,right = 11568,bottom = -15876。
显示
- 可打印区域由点状矩形表示。
- 纸张矩形由灰色背景中的白色区域表示。
- 页边距显示为标尺上的灰色区域。
- 要将屏幕上单击的点转换为纸张上的逻辑点,请使用
ScreenToPaper
方法。例如,请查看CTextBmpView::OnLButtonDown
方法。还有另一个方法PaperToScreen
,它会将纸张上的点转换为屏幕上的点。
限制
此程序可能无法处理大尺寸纸张:例如 A3 尺寸的纸张
致谢
特别感谢 Joe Ismert 为 RulerBar
提供了 VC6.0 的修复。
许可证
本文没有明确的许可证附加到它,但可能包含文章文本或下载文件本身中的使用条款。如有疑问,请通过下面的讨论区联系作者。作者可能使用的许可证列表可以在 此处 找到。