实现预览:
建一个Form把MSchart 调整和From一样大,
实现打印:
me.printform

解决方案 »

  1.   

    于溪玥(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.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 下载例程)
      

  2.   

    拷贝MSCHART到控件PICTURE中,打印此PICTURE即可。
    printer.PaintPicture picture, x1, y1, width1, height1, x2, y2, width2, height2, opcode(see msdn)
    printer.EndDoc