Chart-Logik: Export-Funktionen implementiert

This commit is contained in:
PitzM 2023-04-13 13:01:12 +02:00
parent eca0a779ca
commit e735a061d8
4 changed files with 248 additions and 16 deletions

View File

@ -24,6 +24,7 @@ Partial Class frmMonitor
Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container()
Dim PushTransition1 As DevExpress.Utils.Animation.PushTransition = New DevExpress.Utils.Animation.PushTransition()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmMonitor))
Me.RibbonControl1 = New DevExpress.XtraBars.Ribbon.RibbonControl()
Me.ApplicationMenu1 = New DevExpress.XtraBars.Ribbon.ApplicationMenu(Me.components)
Me.BarButtonItem1 = New DevExpress.XtraBars.BarButtonItem()
@ -85,6 +86,8 @@ Partial Class frmMonitor
Me.AdornerUIManager2 = New DevExpress.Utils.VisualEffects.AdornerUIManager(Me.components)
Me.WorkspaceManager1 = New DevExpress.Utils.WorkspaceManager(Me.components)
Me.SplashScreenManager1 = New DevExpress.XtraSplashScreen.SplashScreenManager(Me, GetType(Global.DigitalData.GUIs.Monitor.frmLoading), True, True)
Me.btnExportChart2PDF = New DevExpress.XtraBars.BarButtonItem()
Me.btnExportChart2PNG = New DevExpress.XtraBars.BarButtonItem()
CType(Me.RibbonControl1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.ApplicationMenu1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.XtraTabControlFileHTML, System.ComponentModel.ISupportInitialize).BeginInit()
@ -144,9 +147,9 @@ Partial Class frmMonitor
'
Me.RibbonControl1.ApplicationButtonDropDownControl = Me.ApplicationMenu1
Me.RibbonControl1.ExpandCollapseItem.Id = 0
Me.RibbonControl1.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl1.ExpandCollapseItem, Me.RibbonControl1.SearchEditItem, Me.buttonSearch, Me.BarButtonItem1, Me.btnExportDetails, Me.btnExportMain, Me.lbResultCount, Me.btnReloadSearches, Me.btnResetLayout, Me.BarButtonItem2, Me.lbVersion, Me.BarButtonItem3, Me.lbSearchTime})
Me.RibbonControl1.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl1.ExpandCollapseItem, Me.RibbonControl1.SearchEditItem, Me.buttonSearch, Me.BarButtonItem1, Me.btnExportDetails, Me.btnExportMain, Me.lbResultCount, Me.btnReloadSearches, Me.btnResetLayout, Me.BarButtonItem2, Me.lbVersion, Me.BarButtonItem3, Me.lbSearchTime, Me.btnExportChart2PDF, Me.btnExportChart2PNG})
Me.RibbonControl1.Location = New System.Drawing.Point(0, 0)
Me.RibbonControl1.MaxItemId = 14
Me.RibbonControl1.MaxItemId = 16
Me.RibbonControl1.Name = "RibbonControl1"
Me.RibbonControl1.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.RibbonPage1})
Me.RibbonControl1.ShowToolbarCustomizeItem = False
@ -270,6 +273,8 @@ Partial Class frmMonitor
Me.RibbonPageGroup2.Alignment = DevExpress.XtraBars.Ribbon.RibbonPageGroupAlignment.Far
Me.RibbonPageGroup2.ItemLinks.Add(Me.btnExportMain)
Me.RibbonPageGroup2.ItemLinks.Add(Me.btnExportDetails)
Me.RibbonPageGroup2.ItemLinks.Add(Me.btnExportChart2PDF)
Me.RibbonPageGroup2.ItemLinks.Add(Me.btnExportChart2PNG)
Me.RibbonPageGroup2.Name = "RibbonPageGroup2"
Me.RibbonPageGroup2.Text = "Export"
'
@ -686,6 +691,22 @@ Partial Class frmMonitor
'
Me.SplashScreenManager1.ClosingDelay = 500
'
'btnExportChart2PDF
'
Me.btnExportChart2PDF.Caption = "Export Charts als PDF"
Me.btnExportChart2PDF.Enabled = False
Me.btnExportChart2PDF.Id = 14
Me.btnExportChart2PDF.ImageOptions.SvgImage = CType(resources.GetObject("BarButtonItem4.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.btnExportChart2PDF.Name = "btnExportChart2PDF"
'
'btnExportChart2PNG
'
Me.btnExportChart2PNG.Caption = "Export Charts als Bild"
Me.btnExportChart2PNG.Enabled = False
Me.btnExportChart2PNG.Id = 15
Me.btnExportChart2PNG.ImageOptions.SvgImage = CType(resources.GetObject("BarButtonItem5.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.btnExportChart2PNG.Name = "btnExportChart2PNG"
'
'frmMonitor
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
@ -820,4 +841,6 @@ Partial Class frmMonitor
Friend WithEvents lbVersion As DevExpress.XtraBars.BarStaticItem
Friend WithEvents BarButtonItem3 As DevExpress.XtraBars.BarButtonItem
Friend WithEvents lbSearchTime As DevExpress.XtraBars.BarStaticItem
Friend WithEvents btnExportChart2PDF As DevExpress.XtraBars.BarButtonItem
Friend WithEvents btnExportChart2PNG As DevExpress.XtraBars.BarButtonItem
End Class

View File

@ -120,6 +120,64 @@
<metadata name="ApplicationMenu1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>362, 17</value>
</metadata>
<assembly alias="DevExpress.Data.v21.2" name="DevExpress.Data.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<data name="BarButtonItem4.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40
LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAABoHAAAC77u/
PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJs
YWNre2ZpbGw6IzcyNzI3Mjt9Cgkuc3Qwe29wYWNpdHk6MC4yO30KPC9zdHlsZT4NCiAgPHBhdGggZD0i
TTgsNGgxOHY2aDJWM2MwLTAuNS0wLjUtMS0xLTFIN0M2LjUsMiw2LDIuNSw2LDN2N2gyVjR6IiBjbGFz
cz0iQmxhY2siIC8+DQogIDxwYXRoIGQ9Ik0yNiwyNkg4VjE2SDZ2MTFjMCwwLjUsMC41LDEsMSwxaDIw
YzAuNSwwLDEtMC41LDEtMVYxNmgtMlYyNnoiIGNsYXNzPSJCbGFjayIgLz4NCiAgPHBhdGggZD0iTTEw
LjMsMTEuNkg5LjZWMTRoMC42YzAuOSwwLDEuMy0wLjQsMS4zLTEuMkMxMS41LDEyLDExLjEsMTEuNiwx
MC4zLDExLjZ6IiBjbGFzcz0iUmVkIiAvPg0KICA8cGF0aCBkPSJNMTYuNywxMS43aC0wLjh2NC45aDAu
OGMwLjcsMCwxLjMtMC4yLDEuNi0wLjdzMC42LTEuMSwwLjYtMS44YzAtMC43LTAuMi0xLjMtMC42LTEu
NyAgQzE4LDExLjksMTcuNCwxMS43LDE2LjcsMTEuN3oiIGNsYXNzPSJSZWQiIC8+DQogIDxwYXRoIGQ9
Ik0yOSw4SDVDNC40LDgsNCw4LjQsNCw5djEwYzAsMC42LDAuNCwxLDEsMWgyNGMwLjYsMCwxLTAuNCwx
LTFWOUMzMCw4LjQsMjkuNiw4LDI5LDh6IE0xMi41LDE0LjYgIGMtMC41LDAuNS0xLjIsMC43LTIuMSww
LjdIOS42VjE4SDh2LTcuN2gyLjVjMS44LDAsMi43LDAuOCwyLjcsMi41QzEzLjIsMTMuNSwxMywxNC4y
LDEyLjUsMTQuNnogTTE5LjYsMTYuOSAgQzE4LjksMTcuNiwxOCwxOCwxNi44LDE4aC0yLjV2LTcuN2gy
LjVjMi41LDAsMy44LDEuMywzLjgsMy44QzIwLjcsMTUuMywyMC4zLDE2LjIsMTkuNiwxNi45eiBNMjYs
MTEuN2gtMi41djEuOWgyLjNWMTVoLTIuM3YzICBoLTEuNnYtNy43SDI2VjExLjd6IiBjbGFzcz0iUmVk
IiAvPg0KICA8ZyBjbGFzcz0ic3QwIj4NCiAgICA8cGF0aCBkPSJNMTAuMywxMS42SDkuNlYxNGgwLjZj
MC45LDAsMS4zLTAuNCwxLjMtMS4yQzExLjUsMTIsMTEuMSwxMS42LDEwLjMsMTEuNnoiIGNsYXNzPSJC
bGFjayIgLz4NCiAgICA8cGF0aCBkPSJNMTYuNywxMS43aC0wLjh2NC45aDAuOGMwLjcsMCwxLjMtMC4y
LDEuNi0wLjdzMC42LTEuMSwwLjYtMS44YzAtMC43LTAuMi0xLjMtMC42LTEuNyAgIEMxOCwxMS45LDE3
LjQsMTEuNywxNi43LDExLjd6IiBjbGFzcz0iQmxhY2siIC8+DQogICAgPHBhdGggZD0iTTI5LDhINUM0
LjQsOCw0LDguNCw0LDl2MTBjMCwwLjYsMC40LDEsMSwxaDI0YzAuNiwwLDEtMC40LDEtMVY5QzMwLDgu
NCwyOS42LDgsMjksOHogTTEyLjUsMTQuNiAgIGMtMC41LDAuNS0xLjIsMC43LTIuMSwwLjdIOS42VjE4
SDh2LTcuN2gyLjVjMS44LDAsMi43LDAuOCwyLjcsMi41QzEzLjIsMTMuNSwxMywxNC4yLDEyLjUsMTQu
NnogTTE5LjYsMTYuOSAgIEMxOC45LDE3LjYsMTgsMTgsMTYuOCwxOGgtMi41di03LjdoMi41YzIuNSww
LDMuOCwxLjMsMy44LDMuOEMyMC43LDE1LjMsMjAuMywxNi4yLDE5LjYsMTYuOXogTTI2LDExLjdoLTIu
NXYxLjloMi4zVjE1aC0yLjN2MyAgIGgtMS42di03LjdIMjZWMTEuN3oiIGNsYXNzPSJCbGFjayIgLz4N
CiAgPC9nPg0KPC9zdmc+Cw==
</value>
</data>
<data name="BarButtonItem5.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40
LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAANECAAAC77u/
PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
Y2U9InByZXNlcnZlIiBpZD0iUGljdHVyZSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9Cgku
R3JlZW57ZmlsbDojMDM5QzIzO30KCS5ZZWxsb3d7ZmlsbDojRkZCMTE1O30KCS5zdDB7b3BhY2l0eTow
LjU7fQo8L3N0eWxlPg0KICA8cGF0aCBkPSJNMjksNEgzQzIuNSw0LDIsNC41LDIsNXYyMmMwLDAuNSww
LjUsMSwxLDFoMjZjMC41LDAsMS0wLjUsMS0xVjVDMzAsNC41LDI5LjUsNCwyOSw0eiBNMjgsMjZINFY2
aDI0VjI2eiIgY2xhc3M9IkJsYWNrIiAvPg0KICA8Y2lyY2xlIGN4PSIyMSIgY3k9IjExIiByPSIzIiBj
bGFzcz0iWWVsbG93IiAvPg0KICA8cG9seWdvbiBwb2ludHM9IjIwLDI0IDEwLDE0IDYsMTggNiwyNCAi
IGNsYXNzPSJHcmVlbiIgLz4NCiAgPGcgY2xhc3M9InN0MCI+DQogICAgPHBvbHlnb24gcG9pbnRzPSIy
MiwyNCAxOCwyMCAyMCwxOCAyNiwyNCAgIiBjbGFzcz0iR3JlZW4iIC8+DQogIDwvZz4NCjwvc3ZnPgs=
</value>
</data>
<metadata name="SvgImageCollection1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>196, 17</value>
</metadata>

View File

@ -21,7 +21,11 @@ Imports DigitalData.Modules.Language.Utils
Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.Patterns
Imports DevExpress.XtraEditors
Imports System.Drawing.Imaging
Imports System.IO
Imports DevExpress.XtraBars
Imports DevExpress.Utils.CommonDialogs
Imports System.Windows.Forms.VisualStyles
Public Class frmMonitor
Private ReadOnly InvisibleColumnMarkers As New List(Of String) From {"[HTML]", "[SQL]", "[FILENAME]"}
@ -84,6 +88,7 @@ Public Class frmMonitor
Private Validator As Validator
Private GridLoader As GridLoader
Private SelectedChart As ChartControl
Private Sub frmStart_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Try
@ -125,9 +130,12 @@ Public Class frmMonitor
Validator = New Validator(LogConfig, LayoutControl1, AdornerUIManager2, ControlHelper)
GridLoader = New GridLoader(LogConfig, SvgImageCollection1)
AddHandler GridLoader.ChartControlClicked, AddressOf ChartControl_Click
InitGrid()
InitTreeList()
InitChartContainer()
InitBarItems()
Dim oGrids As GridView() = New List(Of GridView) From {GridView1, GridView2, GridView3, GridView4}.ToArray
GridBuilder.SetDefaults(oGrids)
@ -235,8 +243,6 @@ Public Class frmMonitor
TreeListResults.DataSource = oTable
lbResultCount.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
Dim oMaxLength = 0
For Each oRow As DataRow In oTable.Rows
Dim oProcess = oRow.Item("COLUMN1")
@ -339,8 +345,6 @@ Public Class frmMonitor
GridViewResults.PopulateColumns()
GridBuilder.SetDateTimeColumns(GridViewResults)
lbResultCount.Visibility = DevExpress.XtraBars.BarItemVisibility.Always
For Each oColumn As GridColumn In GridViewResults.Columns
If oColumn.ColumnType = GetType(Integer) Then
oColumn.AppearanceCell.TextOptions.HAlignment = HorzAlignment.Center
@ -525,7 +529,6 @@ Public Class frmMonitor
End Sub
Private Sub SetResultVisbility(pSearchMode As ReturnTypeEnum)
Select Case pSearchMode
Case ReturnTypeEnum.TreeView
@ -535,8 +538,13 @@ Public Class frmMonitor
TreeListResults.Dock = DockStyle.Fill
ChartViewResultContainer.Visible = False
ChartViewResultContainer.Dock = DockStyle.None
btnExportDetails.Enabled = True
btnExportMain.Enabled = True
lbResultCount.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
EnableButtons(btnExportMain)
EnableButtons(btnExportDetails)
DisableButtons(btnExportChart2PDF)
DisableButtons(btnExportChart2PNG)
Case ReturnTypeEnum.ChartView
GridControlResults.Visible = False
@ -545,8 +553,13 @@ Public Class frmMonitor
TreeListResults.Dock = DockStyle.None
ChartViewResultContainer.Visible = True
ChartViewResultContainer.Dock = DockStyle.Fill
btnExportDetails.Enabled = False
btnExportMain.Enabled = False
lbResultCount.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
DisableButtons(btnExportMain)
DisableButtons(btnExportDetails)
EnableButtons(btnExportChart2PDF)
EnableButtons(btnExportChart2PNG)
Case ReturnTypeEnum.Table
GridControlResults.Visible = True
@ -555,12 +568,40 @@ Public Class frmMonitor
TreeListResults.Dock = DockStyle.None
ChartViewResultContainer.Visible = False
ChartViewResultContainer.Dock = DockStyle.None
btnExportDetails.Enabled = True
btnExportMain.Enabled = True
lbResultCount.Visibility = DevExpress.XtraBars.BarItemVisibility.Always
EnableButtons(btnExportMain)
EnableButtons(btnExportDetails)
DisableButtons(btnExportChart2PDF)
DisableButtons(btnExportChart2PNG)
End Select
End Sub
Private Sub DisableButtons(pBarButtonItem As BarButtonItem)
pBarButtonItem.Enabled = False
pBarButtonItem.Visibility = BarItemVisibility.Never
End Sub
Private Sub EnableButtons(pBarButtonItem As BarButtonItem)
pBarButtonItem.Enabled = True
pBarButtonItem.Visibility = BarItemVisibility.Always
End Sub
Private Sub InitBarItems()
btnExportMain.Visibility = BarItemVisibility.Always
btnExportMain.Enabled = False
btnExportDetails.Visibility = BarItemVisibility.Always
btnExportDetails.Enabled = False
DisableButtons(btnExportChart2PDF)
DisableButtons(btnExportChart2PNG)
lbResultCount.Visibility = BarItemVisibility.Never
lbSearchTime.Visibility = BarItemVisibility.Never
End Sub
''' <summary>
''' Linklogik für Hyperlink-Spalten
''' </summary>
@ -668,6 +709,9 @@ Public Class frmMonitor
DisposeGrid()
InitGrid()
DisposeCharts()
InitChartContainer()
SplitContainerSQL.Collapsed = True
SplitContainerFileHTML.Collapsed = True
@ -675,6 +719,7 @@ Public Class frmMonitor
btnExportDetails.Enabled = False
SetResultCount(0)
InitBarItems()
LoadSearch()
HideAllTabs()
@ -1177,10 +1222,14 @@ Public Class frmMonitor
DisposeGrid()
InitGrid()
DisposeCharts()
InitChartContainer()
HideAllTabs()
Await LoadData()
SetResultCount(0)
InitBarItems()
End If
End Sub
@ -1191,12 +1240,21 @@ Public Class frmMonitor
GridControlResults = Nothing
End Sub
Private Sub DisposeCharts()
ChartViewResultContainer.Dispose()
ChartViewResultContainer = Nothing
End Sub
Private Sub SetResultCount(pResults As Integer)
lbResultCount.Caption = String.Format(lbResultCount.Tag, pResults)
End Sub
Private Sub SetSearchTimeValue(pValue As String)
lbSearchTime.Caption = pValue
If pValue.Equals("00:00") Then
lbSearchTime.Caption = ""
Else
lbSearchTime.Caption = pValue
End If
End Sub
Private Sub SetVersion()
@ -1230,8 +1288,8 @@ Public Class frmMonitor
Private Sub InitChartContainer()
ChartViewResultContainer = GridLoader.InitChartViewResultContainer()
SplitContainerSQL.Panel1.Controls.Add(ChartViewResultContainer)
SelectedChart = Nothing
End Sub
Private Sub ResizeCharContainer()
@ -1261,5 +1319,87 @@ Public Class frmMonitor
End Try
End Sub
Private Sub ChartControl_Click(sender As Object, e As EventArgs)
SelectedChart = CType(sender, ChartControl)
End Sub
Private Sub btnExportChart2PDF_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnExportChart2PDF.ItemClick
Try
If Not IsNothing(SelectedChart) Then
XtraSaveFileDialog1.Filter = "PDF Files (*.pdf*)|*.pdf"
If XtraSaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
' TODO: Filename
ExportChart2Pdf(SelectedChart, XtraSaveFileDialog1.FileName)
End If
Else
FormHelper.ShowInfoMessage("Bitte einen Chart auswählen", "Chart Export per PDF")
End If
Catch ex As Exception
FormHelper.ShowErrorMessage(ex, "Chart Export nach PDF")
End Try
End Sub
Private Sub btnExportChart2PNG_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnExportChart2PNG.ItemClick
Try
If Not IsNothing(SelectedChart) Then
XtraSaveFileDialog1.Filter = "PNG Files(* .png *)|*.png"
If XtraSaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
' TODO: Filename
ExportChartToImage(SelectedChart, XtraSaveFileDialog1.FileName)
End If
Else
FormHelper.ShowInfoMessage("Bitte einen Chart auswählen", "Chart Export per PNG")
End If
Catch ex As Exception
FormHelper.ShowErrorMessage(ex, "Chart Export nach PNG")
End Try
End Sub
Sub ExportChart2Pdf(pMyChart As ChartControl, pFilePath As String)
Try
pMyChart.OptionsPrint.ImageFormat = DevExpress.XtraCharts.Printing.PrintImageFormat.Metafile
pMyChart.ExportToPdf(pFilePath, New DevExpress.XtraPrinting.PdfExportOptions With {
.ConvertImagesToJpeg = False
})
' Exports to a stream as PDF.
Dim pdfStream As FileStream = New FileStream(pFilePath, FileMode.Create)
pMyChart.ExportToPdf(pdfStream)
' ...
pdfStream.Close()
Catch ex As Exception
Logger.Error(ex)
End Try
End Sub
Sub ExportChartToImage(pMyChart As ChartControl, pFilePath As String)
Try
SaveChartImageToFile(pMyChart, ImageFormat.Png, pFilePath)
Dim image As Image = GetChartImage(pMyChart, ImageFormat.Png)
image.Save(pFilePath)
Catch ex As Exception
Logger.Error(ex)
End Try
End Sub
Private Sub SaveChartImageToFile(ByVal chart As ChartControl, ByVal format As ImageFormat, ByVal fileName As String)
' Create an image in the specified format from the chart
' and save it to the specified path.
chart.ExportToImage(fileName, format)
End Sub
Private Function GetChartImage(ByVal chart As ChartControl, ByVal format As ImageFormat) As Image
' Create an image.
Dim image As Image = Nothing
' Create an image of the chart.
Using s As New MemoryStream()
chart.ExportToImage(s, format)
image = System.Drawing.Image.FromStream(s)
End Using
' Return the image.
Return image
End Function
End Class

View File

@ -23,6 +23,8 @@ Public Class GridLoader
Public ReadOnly Property SvgImageCollection As SvgImageCollection
Public ReadOnly Property GridBuilder As GridBuilder
Public Event ChartControlClicked As EventHandler
Private ReadOnly StateIcons As New Dictionary(Of String, NodeImage) From {
{STATE_SUCCESS, NodeImage.Success},
{STATE_FAILURE, NodeImage.Failure}
@ -131,6 +133,11 @@ Public Class GridLoader
.Dock = DockStyle.Fill
}
AddHandler oChartControlTopLeft.Click, AddressOf ChartControl_Click
AddHandler oChartControlTopRight.Click, AddressOf ChartControl_Click
AddHandler oChartControlBottomLeft.Click, AddressOf ChartControl_Click
AddHandler oChartControlBottomRight.Click, AddressOf ChartControl_Click
oSplitContainerTop.Panel1.AddControl(oChartControlTopLeft)
oSplitContainerTop.Panel2.AddControl(oChartControlTopRight)
oSplitContainerBottom.Panel1.AddControl(oChartControlBottomLeft)
@ -139,6 +146,10 @@ Public Class GridLoader
Return oChartViewResultContainer
End Function
Private Sub ChartControl_Click(sender As Object, e As EventArgs)
RaiseEvent ChartControlClicked(sender, Nothing)
End Sub
Public Sub InitTreeListColumns(pTreeList As TreeList, pMaxLength As Integer)
Dim oColumn1 = pTreeList.Columns.Item("COLUMN1")
Dim oColumn2 = pTreeList.Columns.Item("COLUMN2")