使用 .Net 图表控件将多个图像合二为一



用Power shell编写,我正在使用.Net图表控件来创建一些图表,图形。目前,我可以将这些图表,图形分别保存到每个图像文件中,如下所示:

$mailHash = @{"Email Set"=$emailPer;"No Email"=$noEmailPer}
$outFilePic= "C:My DocumentsDocuments"
Function drawPie ($hash){
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Windows.Forms.DataVisualization
$Chart = New-object System.Windows.Forms.DataVisualization.Charting.Chart
$ChartArea = New-Object System.Windows.Forms.DataVisualization.Charting.ChartArea
$Series = New-Object -TypeName System.Windows.Forms.DataVisualization.Charting.Series
$ChartTypes = [System.Windows.Forms.DataVisualization.Charting.SeriesChartType]
$Series.ChartType = $ChartTypes::Pie
$Chart.Series.Add($Series)
$Chart.ChartAreas.Add($ChartArea)
$Chart.Series['Series1'].Points.DataBindXY($hash.keys, $hash.values)
$Chart.Series[‘Series1’][‘PieLabelStyle’] = ‘Disabled’
$Legend = New-Object System.Windows.Forms.DataVisualization.Charting.Legend
$Legend.IsEquallySpacedItems = $True
$Legend.BorderColor = 'Black'
$Chart.Legends.Add($Legend)
$chart.Series["Series1"].LegendText = "#VALX (#VALY%)"
$Chart.Width = 700
$Chart.Height = 400
$Chart.Left = 10
$Chart.Top = 10
$Chart.BackColor = [System.Drawing.Color]::White
$Chart.BorderColor = 'Black'
$Chart.BorderDashStyle = 'Solid'
$ChartTitle = New-Object System.Windows.Forms.DataVisualization.Charting.Title
$ChartTitle.Text = 'Email '
$Font = New-Object System.Drawing.Font @('Microsoft Sans Serif','12', [System.Drawing.FontStyle]::Bold)
$ChartTitle.Font =$Font
$Chart.Titles.Add($ChartTitle)
$Chart.SaveImage($outFilePic, 'jpeg')   
}

以上是创建饼图的动态功能。因此,还将创建许多不同的图表。如何将它们保存在一张图像中?

您可以尝试以下版本吗,我已经将多个系列和图例添加到同一图表对象(我为此进行了系列名称获取动态(并保存了它:

Function drawPie ($chart,$hash,$ChartT){

$ChartArea = New-Object System.Windows.Forms.DataVisualization.Charting.ChartArea
$Series = New-Object -TypeName System.Windows.Forms.DataVisualization.Charting.Series

$Series.ChartType = $ChartT
$Chart.Series.Add($Series)
$Chart.ChartAreas.Add($ChartArea)  
$Chart.Series[$series.name].Points.DataBindXY($hash.keys, $hash.values)
$Chart.Series[$series.name][‘PieLabelStyle’] = ‘Disabled’
$Chart.Series[$series.name].ChartArea = $ChartArea.name
$Legend = New-Object System.Windows.Forms.DataVisualization.Charting.Legend
$Legend.IsEquallySpacedItems = $True
$Legend.BorderColor = 'Black'
$Chart.Legends.Add($Legend)
$chart.Series[$series.name].LegendText = "#VALX (#VALY%)"
$chart.Series[$series.name].Legend = $Legend.name

}

$mailHash = @{"Email Set"=$emailPer;"No Email"=$noEmailPer}
#modify this path
$outFilePic= "d:tempstala.jpeg"
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Windows.Forms.DataVisualization
$Chart = New-object System.Windows.Forms.DataVisualization.Charting.Chart
$Chart.Width = 1400
$Chart.Height = 800
$Chart.Left = 10
$Chart.Top = 10
$Chart.BackColor = [System.Drawing.Color]::White
$Chart.BorderColor = 'Black'
$Chart.BorderDashStyle = 'Solid'    
$ChartTypes = [System.Windows.Forms.DataVisualization.Charting.SeriesChartType]
$data = @{"10"="5";"20"="5";"30"="100";}
$data2 = @{"100"="1";"200"="49";"300"="50";}
drawPie $chart $data $ChartTypes::Pie
drawPie $chart $data2 $ChartTypes::Bar
$Chart.SaveImage($outFilePic, 'jpeg')   

最新更新