各位高手请帮忙---如何打印MSChart的图象,并实现打印预览? 实现预览:建一个Form把MSchart 调整和From一样大,实现打印:me.printform 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 于溪玥(PlayYuer)贴:《巧用 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.RecordsetadoRecordset.Fields.Append "X", adVariantadoRecordset.OpenSet Me.DataSource = adoRecordsetDim adoRecordset As New ADODB.RecordsetadoRecordset.Fields.Append "X", adVariantadoRecordset.OpenSet Me.DataSource = adoRecordsetConst ErrorX = 400 '打印机横向误差Const ErrorY = 400 '打印机纵向误差Me.ReportWidth = Printer.Width - Me.LeftMargin - Me.RightMargin - ErrorXMe.Sections.Item("Section1").Height = 0Me.Sections.Item("Section3").Height = 0Me.Sections.Item("Section2").Controls.Item("Image1").PictureAlignment = rptPACenterMe.Sections.Item("Section2").Controls.Item("Image1").SizeMode = rptSizeClipMe.Sections.Item("Section2").Controls.Item("Image1").Left = 0Me.Sections.Item("Section2").Controls.Item("Image1").Top = 0Me.Sections.Item("Section2").Height = Printer.Height - Me.TopMargin - Me.BottomMargin - ErrorYMe.Sections.Item("Section2").Controls.Item("Image1").Width = Me.ReportWidthMe.Sections.Item("Section2").Controls.Item("Image1").Height = Me.Sections.Item("Section2").HeightDim x As PictureSelect Case i Case 1 '打印 MsChart。MsChart 本身并没有提供 Print 或 PaintPicture 方法 FormX.MSChartX.EditCopy 'MsChart 可绘制在某窗体 FormX 上 Set x = Clipboard.GetData() Case 2 '打印图片文件(Image、Picture) Set x = LoadPicture("..\..\xxx.bmp") '图片文件(*.jpg ...)路径End SelectSet Me.Sections.Item("Section2").Controls.Item("Image1").Picture = x'...End Sub 该方案比使用 "Object.PaintPicture ... " 的方法打印多了预览的功能,而且还可以通过 RptImage 控件的 PictureAlignment 属性控制图像在纸张上的位置,通过 SizeMode 属性控制图像的拉伸,优点不言而喻。(欢迎去 Http://playyuer.spedia.net 下载例程) 拷贝MSCHART到控件PICTURE中,打印此PICTURE即可。printer.PaintPicture picture, x1, y1, width1, height1, x2, y2, width2, height2, opcode(see msdn)printer.EndDoc 请帮列出VB中使用以下报表控件报表外观,打印效果好的排名,以及理由 从网站上获取的数据为GZIP加密的,如何解密? 超OUTLOOK的软件,开放源代码了 如何知道一个msgbox对话框已经弹出来了? 建立目录问题 如何在一个无标题的窗体上截获键盘输入的信息? 请教怎样实现:按下按钮后,按钮所在窗口最小化 POST数据到ASP页面request不全数据 抓狂问题 小弟的这个问题很着急,请问那位可以给解决以下 做一个vb 的聊天界面 RichTextBox2中 表情图片无法显示 API参数类型问题! 变量声明的问题
《巧用 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.OpenSet Me.DataSource = adoRecordsetConst 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 = 0Me.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 = 0Me.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").HeightDim x As Picture
Select Case i
Case 1 '打印 MsChart。MsChart 本身并没有提供 Print 或 PaintPicture 方法
FormX.MSChartX.EditCopy 'MsChart 可绘制在某窗体 FormX 上
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
属性控制图像的拉伸,优点不言而喻。(欢迎去 Http://playyuer.spedia.net 下载例程)
printer.PaintPicture picture, x1, y1, width1, height1, x2, y2, width2, height2, opcode(see msdn)
printer.EndDoc