打印图表的问题??

czw1975 2000-08-22 05:12:00
我最近在编一个数据统计的程序,为了使结果形象,决定以图表的形式“打印”输出,但用了 VB6 的 MSCHART 控件效果不十分理想,画面粗糙,且还要利用剪切板。不知那位高手有更好的方法或控件,不妨通知在下。多谢!多谢!!
...全文
115 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
playyuer 2000-08-23
  • 打赏
  • 举报
回复
于溪玥(PlayYuer) 2000/02/01 贴:
《巧用 VB6 之 Data Report 实现图片(Picture)、图表(MsChart)的打印及预览》

VB 6.0 专业版和企业版中的数据报表设计器 (Data Report Designer) 是用来实现打
印数据库数据的有力工具。在通常状况下, DataReport 的数据源(DataSource)应该是由数
据库(DataBase)的基本表(Table)、视图(View)或查询(Query)等生成的,更确切的说该数据
源应是一个 ADODB.Recordset (二维表),而且 ADO 允许生成并打开任意无数据库实体的记
录集。这样就可以为 DataReport 随便设置一个数据源,用其实现实现图片打印的预览。

首先,新建"标准 Exe"工程,再为工程添加 "Data Report" 。设置"工程属性"的启动对
象为 "DataReport"。先使 DataReport "显示报表标头/注脚"(右鼠键快捷菜单),再绘制一
个 RptImage 控件到"报表标头"区域。然后,就可以编写程序代码了:

Private DataReport_Initialize()
'创建并打开一个任意的记录集,并将其设置为 DataReport 的数据源
Dim adoRecordset As New ADODB.Recordset
adoRecordset.Fields.Append "X", adVariant
adoRecordset.Open
Set Me.DataSource = adoRecordset
Dim adoRecordset As New ADODB.Recordset
adoRecordset.Fields.Append "X", adVariant
adoRecordset.Open

Set Me.DataSource = adoRecordset

Const ErrorX = 400 '打印机横向误差
Const ErrorY = 400 '打印机纵向误差

Me.ReportWidth = Printer.Width - Me.LeftMargin - Me.RightMargin - ErrorX
Me.Sections.Item("Section1").Height = 0
Me.Sections.Item("Section3").Height = 0

Me.Sections.Item("Section2").Controls.Item("Image1").PictureAlignment = rptPACenter
Me.Sections.Item("Section2").Controls.Item("Image1").SizeMode = rptSizeClip
Me.Sections.Item("Section2").Controls.Item("Image1").Left = 0
Me.Sections.Item("Section2").Controls.Item("Image1").Top = 0

Me.Sections.Item("Section2").Height = Printer.Height - Me.TopMargin - Me.BottomMargin - ErrorY
Me.Sections.Item("Section2").Controls.Item("Image1").Width = Me.ReportWidth
Me.Sections.Item("Section2").Controls.Item("Image1").Height = Me.Sections.Item("Section2").Height

Dim x As Picture
Select Case i
Case 1 '打印 MsChart。MsChart 本身并没有提供 Print 或 PaintPicture 方法
Dim tempW As Long
Dim tempH As Long
'放大
tempW=FormX.MSChartX.Width
tempH=FormX.MSChartX.Height
FormX.MSChartX.Width = FormX.MSChartX.Width * 2
FormX.MSChartX.Height = FormX.MSChartX.Height * 2
FormX.MSChartX.EditCopy 'MsChart 可绘制在某窗体 FormX 上
'还原
FormX.MSChartX.Width = tempW
FormX.MSChartX.Height = tempH
Set x = Clipboard.GetData()
Case 2 '打印图片文件(Image、Picture)
Set x = LoadPicture("..\..\xxx.bmp") '图片文件(*.jpg ...)路径
End Select
Set Me.Sections.Item("Section2").Controls.Item("Image1").Picture = x
End Sub

该方案比使用 "Object.PaintPicture ... " 的方法打印多了预览的功能,而且还可以
通过 RptImage 控件的 PictureAlignment 属性控制图像在纸张上的位置,通过 SizeMode
属性控制图像的拉伸,优点是不言而喻的。
playyuer 2000-08-23
  • 打赏
  • 举报
回复
于溪玥(PlayYuer) 2000/02/01 贴:
《巧用 VB6 之 Data Report 实现图片(Picture)、图表(MsChart)的打印及预览》

VB 6.0 专业版和企业版中的数据报表设计器 (Data Report Designer) 是用来实现打
印数据库数据的有力工具。在通常状况下, DataReport 的数据源(DataSource)应该是由数
据库(DataBase)的基本表(Table)、视图(View)或查询(Query)等生成的,更确切的说该数据
源应是一个 ADODB.Recordset (二维表),而且 ADO 允许生成并打开任意无数据库实体的记
录集。这样就可以为 DataReport 随便设置一个数据源,用其实现实现图片打印的预览。

首先,新建"标准 Exe"工程,再为工程添加 "Data Report" 。设置"工程属性"的启动对
象为 "DataReport"。先使 DataReport "显示报表标头/注脚"(右鼠键快捷菜单),再绘制一
个 RptImage 控件到"报表标头"区域。然后,就可以编写程序代码了:

Private DataReport_Initialize()
'创建并打开一个任意的记录集,并将其设置为 DataReport 的数据源
Dim adoRecordset As New ADODB.Recordset
adoRecordset.Fields.Append "X", adVariant
adoRecordset.Open
Set Me.DataSource = adoRecordset
Dim adoRecordset As New ADODB.Recordset
adoRecordset.Fields.Append "X", adVariant
adoRecordset.Open

Set Me.DataSource = adoRecordset

Const ErrorX = 400 '打印机横向误差
Const ErrorY = 400 '打印机纵向误差

Me.ReportWidth = Printer.Width - Me.LeftMargin - Me.RightMargin - ErrorX
Me.Sections.Item("Section1").Height = 0
Me.Sections.Item("Section3").Height = 0

Me.Sections.Item("Section2").Controls.Item("Image1").PictureAlignment = rptPACenter
Me.Sections.Item("Section2").Controls.Item("Image1").SizeMode = rptSizeClip
Me.Sections.Item("Section2").Controls.Item("Image1").Left = 0
Me.Sections.Item("Section2").Controls.Item("Image1").Top = 0

Me.Sections.Item("Section2").Height = Printer.Height - Me.TopMargin - Me.BottomMargin - ErrorY
Me.Sections.Item("Section2").Controls.Item("Image1").Width = Me.ReportWidth
Me.Sections.Item("Section2").Controls.Item("Image1").Height = Me.Sections.Item("Section2").Height

Dim x As Picture
Select Case i
Case 1 '打印 MsChart。MsChart 本身并没有提供 Print 或 PaintPicture 方法
Dim tempW As Long
Dim tempH As Long
'放大
tempW=FormX.MSChartX.Width
tempH=FormX.MSChartX.Height
FormX.MSChartX.Width = FormX.MSChartX.Width * 2
FormX.MSChartX.Height = FormX.MSChartX.Height * 2
FormX.MSChartX.EditCopy 'MsChart 可绘制在某窗体 FormX 上
'还原
FormX.MSChartX.Width = tempW
FormX.MSChartX.Height = tempH
Set x = Clipboard.GetData()
Case 2 '打印图片文件(Image、Picture)
Set x = LoadPicture("..\..\xxx.bmp") '图片文件(*.jpg ...)路径
End Select
Set Me.Sections.Item("Section2").Controls.Item("Image1").Picture = x
End Sub

该方案比使用 "Object.PaintPicture ... " 的方法打印多了预览的功能,而且还可以
通过 RptImage 控件的 PictureAlignment 属性控制图像在纸张上的位置,通过 SizeMode
属性控制图像的拉伸,优点是不言而喻的。
OUYAN 2000-08-23
  • 打赏
  • 举报
回复
把图片装入PICTURE BOX中
Printer.PaintPicture Picture1.Image,0,0
Printer.EndDoc
OUYAN 2000-08-23
  • 打赏
  • 举报
回复
先把图片装入PICTURE BOX中
Printer.PaintPicture Picture1.Image,0,0
Printer.EndDoc
earphone 2000-08-22
  • 打赏
  • 举报
回复
关注!

7,759

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧