我想把MSChart控件繪制的曲線打印到一張A4的紙上﹐請教怎么做呀?...在線等待

xysophie 2003-08-20 10:27:53
我要把MSchart控件上的曲線打印到一張A4紙上
要求﹕上有標題﹐曲線圖居中﹐下有注釋什么的

我沒有用過MSChart控件﹐誰能告訴我該怎么做呢?分不夠另開。
...全文
611 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xxoo874 2003-12-16
  • 打赏
  • 举报
回复
打印的一部分代码!你可以参考一下看看对你有什么帮助!特别是SetPrinterScale这部分!:)
xxoo874 2003-12-16
  • 打赏
  • 举报
回复
Private Sub mnuFilePrint_Click()
On Error Resume Next
If frmActivePrint Is Nothing Then Exit Sub
With dlgCommonDialog '打印机公用对话框
.DialogTitle = "打印"
.CancelError = True
.Flags = 1
Printer.FontSize = dlgCommonDialog.FontSize
'将打印机公用对话框设置的字体大小传递给打印机
.ShowPrinter ' 在屏幕上显示【打印】公用对话框
If Err <> MSComDlg.cdlCancel Then
Printer.FontTransparent = False '初始化打印的字体为不透明
SetPrinterScale frmActivePrint '匹配打印机的缩放属性与窗体的属性
For i = 1 To .Copies
Printer.NewPage '打印机坐标初始化
frmActivePrint.PrintForm
Printer.KillDoc
Next i

PrintAnywhere Printer '打印另一页的内容
Printer.NewPage '打印机坐标初始化
Printer.EndDoc '将该任务加入打印机任务队列
Printer.KillDoc '取消当前的打印任务
End If
End With
End Sub
Private Sub SetPrinterScale(obj As Object)
Dim pwid As Single, phgt As Single, xmid As Single, ymid As Single
Dim owid As Single, ohgt As Single
owid = obj.ScaleX(obj.ScaleWidth, obj.ScaleMode, vbTwips)
ohgt = obj.ScaleY(obj.ScaleHeight, obj.ScaleMode, vbTwips)
'获取窗体以Twips表示的尺寸
pwid = Printer.ScaleX(Printer.ScaleWidth, Printer.ScaleMode, vbTwips)
phgt = Printer.ScaleY(Printer.ScaleHeight, Printer.ScaleMode, vbTwips)
'获取打印机以Twips表示的尺寸
If (ohgt / owid > phgt / pwid) Then
s = phgt / ohgt
Else
s = pwid / owid
End If '计算缩放因子
pwid = obj.ScaleX(pwid, vbTwips, obj.ScaleMode) / s
phgt = obj.ScaleY(phgt, vbTwips, obj.ScaleMode) / s
'将打印机的尺寸转换成obj的坐标系统 / 缩放因子
x_mid = obj.ScaleLeft + obj.ScaleWidth / 2
y_mid = obj.ScaleTop + obj.ScaleHeight / 2 '设置打印区域的中心点坐标
Printer.Scale (x_mid - pwid / 2, y_mid - phgt / 2)-(x_mid + pwid / 2, y_mid + phgt / 2)
' 设置打印机中新的ScaleWidth和ScaleHeight
End Sub
hxy2003 2003-08-20
  • 打赏
  • 举报
回复
或是改0,0
如改成
100,500

Printer.PaintPicture Clipboard.GetData(), 0, 0
hxy2003 2003-08-20
  • 打赏
  • 举报
回复
改改printer.currentX=XX
printer.currentY=YY


xysophie 2003-08-20
  • 打赏
  • 举报
回复
to hxy2003(asfd):
非常感謝﹐這樣可以印出來。

但是﹐上邊要求有格式限制﹕
要有標題和下邊的一些其它注釋
也就是要把圖形打印在A4紙的中間位置

您提供的方法只能在紙的左上角打印出來
能夠再提供方法嗎?
謝謝﹗﹗
wumy_ld 2003-08-20
  • 打赏
  • 举报
回复
一楼的高
Thanks4Help 2003-08-20
  • 打赏
  • 举报
回复
gz
hxy2003 2003-08-20
  • 打赏
  • 举报
回复
MSChart1.EditCopy
Printer.Print " "
Printer.PaintPicture Clipboard.GetData(), 0, 0
Printer.EndDoc
hxy2003 2003-08-20
  • 打赏
  • 举报
回复
MSChart1.Title.Text = "注釋"

缩放的不会,
生成的大小与你的控件的大小一样吧,,..你不要超出它就行啦
xysophie 2003-08-20
  • 打赏
  • 举报
回复
另外﹐如果我的MSChart的圖片超過了A4紙張預訂大小
如何做圖像的縮放呢?
xysophie 2003-08-20
  • 打赏
  • 举报
回复
To hxy2003(asfd):
呵呵﹐不好意思﹐我從來沒有用過MSChart控件

也沒有這樣打印過﹐

你能再告訴我怎么將提前寫好的標題和注釋也打印出來嗎?(比方說已經寫到Label中了)

1,451

社区成员

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

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