如何在报表预览时对报表进行缩放(200分)

  • 主题发起人 主题发起人 lxggc
  • 开始时间 开始时间
L

lxggc

Unregistered / Unconfirmed
GUEST, unregistred user!
本人准备自己编写一个报表控件,已基本完成,但预览时的按比例缩放问题无法解决,
不知道其他高手是如何实现的,我的报表画在 TWinControl 或 DC (canvas.handle) 上,
不要告诉我是用 StretchDraw 哟.
 
你应该看看王寒松写的ereport, 那个也是基于DC, 支持缩放的,有源码
 
看ehlib的源代码, 比ereport还好些, 与word的打印预览差不多
 
一般是画在 TMetaFile 的 Canvas 上,TMetaFile 是矢量图形,缩放不容易失真。
QuickReport 就是用它来实现缩放的。
 
1、画在TMetaFile上面
2、调用SetMapMode、SetWindowExtEx、SetViewPortExtEx设置映射模式来调整你的缩放比例
3、调用Canvas.Draw(x,y,FMetaFile)把报表输出
如有不清楚请看昆腾的打印控件或Ehlib的打印控件源码
 
To bbkxjy:
TMetaFile其实并非存储图形,而是存储生成图形的指令,如MoveTo,LineTo,TextOut等,
如果每次更改缩放比例后调用SetMapMode、SetWindowExtEx、SetViewPortExtEx等来调整映射
模式,然后用普通的MoveTo,Lineto,TextOut等重新生成报表结果是一样的,关键还是在于
上面几个API函数的使用
 
to balaschen:
谢谢你的澄清,我自己也只是有个模糊的概念而已。又学了东西了 [:)]
 
不知道哪里有ehlib载?
 
use scallby(M,D)应该可以吧
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部