在vb.net中打印前如何调整图表大小
我想在我的vb.net应用程序中打印一张图表,但当我打印它时,它非常小,我找不到如何调整它的大小 目前,我正在使用以下代码:(可在此处找到:) 在我所有的尝试之后,我只是想移动边距。。。这很好,但我仍然无法正确阅读图表 是否有人遇到了同样的问题并找到了解决方案 ----------------------------------------编辑------------------------------------- 正如我在你回答的评论中解释的那样,我现在可以改变图表的位置和大小,但是出现了空白方块,我不知道为什么在vb.net中打印前如何调整图表大小,vb.net,charts,printing,resize,Vb.net,Charts,Printing,Resize,我想在我的vb.net应用程序中打印一张图表,但当我打印它时,它非常小,我找不到如何调整它的大小 目前,我正在使用以下代码:(可在此处找到:) 在我所有的尝试之后,我只是想移动边距。。。这很好,但我仍然无法正确阅读图表 是否有人遇到了同样的问题并找到了解决方案 ----------------------------------------编辑------------------------------------- 正如我在你回答的评论中解释的那样,我现在可以改变图表的位置和大小,但是出现了
根据您发布的图像,您的问题似乎是图表区域而不是图表控制。 您需要增加图表区域的面积。 在下面的示例中(这可以帮助您),我使用了两个参数scaleX和scaleY。 你可以在这两个问题上找到合适的打印尺寸。 注意:作为示例中的图表区域,我使用了第一个图表控件,但是,您可以使用另一个按名称调用它。希望是你需要的
Private Sub BT_Print_Click(sender As Object, e As EventArgs) Handles BT_Print.Click
Using pdS As New PrintDocument()
Dim scaleX As Single = 1.5
Dim scaleY As Single = 1.2
With pdS.DefaultPageSettings
.Landscape = True
.Margins = New Margins(10, 10, 10, 10)
End With
Chart_Requis.Printing.PrintDocument = pdS
AddHandler pdS.PrintPage, Sub(obj As Object, ev As PrintPageEventArgs)
Using ev.Graphics
With Chart_Requis.ChartAreas.FirstOrDefault
Dim initialP As DataVisualization.Charting.ElementPosition = .Position
Dim newP As Rectangle = New Rectangle With {
.X = CInt(initialP.X),
.Y = CInt(initialP.Y),
.Width = CInt(initialP.Width * scaleX),
.Height = CInt(initialP.Height * scaleY)
}
.Position.FromRectangleF(newP)
Chart_Requis.Printing.PrintPaint(ev.Graphics, ev.MarginBounds)
.Position = initialP
End With
End Using
End Sub
Using PrintDialog1 As New PrintPreviewDialog With {
.Document = pdS
}
If (PrintDialog1.ShowDialog = DialogResult.OK) Then
pdS.Print()
End If
End Using
End Using
End Sub
好的,我终于在这里找到了一些对我有用的东西,我将其应用到我的案例中: 我让您在这里看到最终图表: 我添加了一个对话框来选择打印机,并稍微修改了原始代码,如您在此处所见:
Private Sub BT_Print_Click(sender As Object, e As EventArgs) Handles BT_Print.Click
Print_Preview()
End Sub
Public Sub Print_Preview()
Dim Print_Doc As PrintDocument
Print_Doc = Chart_Requis.Printing.PrintDocument
AddHandler Print_Doc.PrintPage, New PrintPageEventHandler(AddressOf Print_Page)
'SHEET PARAMETERS
Print_Doc.DefaultPageSettings.Landscape = True
Print_Doc.DefaultPageSettings.Margins = New Printing.Margins(0, 1, 1, 1)
Print_Doc.DefaultPageSettings.Color = True
'CHOOSING PRINTER AND OTHER PARAMETERS
Dim Print_dlg As New PrintDialog
Print_dlg.Document = Print_Doc
Dim result As DialogResult = Print_dlg.ShowDialog()
'IF DIALOGBOX OK THEN CONTINUE OTHERWISE NO
If (result = DialogResult.OK) Then
'PUT MARKERS TO THE RIGHT SIZE
For i = 0 To Chart_Requis.Series.Count - 1
Chart_Requis.Series(i).MarkerSize = 1
Next
'CHECKING BEFORE PRINTING
Chart_Requis.Printing.PrintPreview()
End If
End Sub
Private Sub Print_Page(ByVal sender As Object, ByVal ev As PrintPageEventArgs)
'DEFINI LA POSITION ET LA TAILLE DU GRAPHIQUE
Dim chartPosition As New Rectangle(-70, -50, 2500, 2300)
Chart_Requis.Printing.PrintPaint(ev.Graphics, chartPosition)
End Sub
希望它能帮助今天遇到同样困难的人…首先非常感谢@G3nt\u M3caj的回答,我现在可以更改图表的大小和位置,但是出现了一些空白区域,我不明白为什么!我将编辑我的帖子向你们展示,因为我不知道如何在这里做…试着评论这部分:“.Position.FromRectangleF(newP)”。它可能不需要只调整区域大小,因为它是自己调整大小的(所有图表控件)。如果有效,您将评论与“.Position”相关的其他部分。祝你有一个愉快的一天:)我试过了,但它不再调整大小。。。我尝试了很多东西,包括通过手动设置位置来避免使用矩形,但空白方块仍然在这里,我不明白它们可以从哪里来!还是要谢谢你,祝你今天过得愉快嗨,麦克罗斯,现在是八月,我的孩子们时不时地在海里,所以很抱歉没有回应。我很高兴你为你的问题找到了解决方案(我希望这是暂时的,因为我不喜欢你的解决方案,甚至我的解决方案,需要更多的时间来考虑)。保持安全;)GentHi@G3nt\u M3caj,没问题,再次感谢您为我的主题所花的时间;)是的,这还远远不够完美,但我真的根本不是专家。所以,现在它能完成任务,对我来说已经是件好事了!也祝你身体健康!
Private Sub BT_Print_Click(sender As Object, e As EventArgs) Handles BT_Print.Click
Print_Preview()
End Sub
Public Sub Print_Preview()
Dim Print_Doc As PrintDocument
Print_Doc = Chart_Requis.Printing.PrintDocument
AddHandler Print_Doc.PrintPage, New PrintPageEventHandler(AddressOf Print_Page)
'SHEET PARAMETERS
Print_Doc.DefaultPageSettings.Landscape = True
Print_Doc.DefaultPageSettings.Margins = New Printing.Margins(0, 1, 1, 1)
Print_Doc.DefaultPageSettings.Color = True
'CHOOSING PRINTER AND OTHER PARAMETERS
Dim Print_dlg As New PrintDialog
Print_dlg.Document = Print_Doc
Dim result As DialogResult = Print_dlg.ShowDialog()
'IF DIALOGBOX OK THEN CONTINUE OTHERWISE NO
If (result = DialogResult.OK) Then
'PUT MARKERS TO THE RIGHT SIZE
For i = 0 To Chart_Requis.Series.Count - 1
Chart_Requis.Series(i).MarkerSize = 1
Next
'CHECKING BEFORE PRINTING
Chart_Requis.Printing.PrintPreview()
End If
End Sub
Private Sub Print_Page(ByVal sender As Object, ByVal ev As PrintPageEventArgs)
'DEFINI LA POSITION ET LA TAILLE DU GRAPHIQUE
Dim chartPosition As New Rectangle(-70, -50, 2500, 2300)
Chart_Requis.Printing.PrintPaint(ev.Graphics, chartPosition)
End Sub