2014-01-13 2 views
3

내 차트를 만드는 몇 가지 문제가 있어요 여기에 내 코드파워 쉘 3D 윈폼 3D 차트

[Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") 
[Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms.DataVisualization") 
$WeekTable = @{ 
    "Week1" = 50 
    "Week2" = 50 
} 
$WeekChart = New-Object System.Windows.Forms.DataVisualization.Charting.Chart 
$WeekChart.Width = 1200 
$WeekChart.Height = 768 
$WeekChartArea = New-Object System.Windows.Forms.DataVisualization.Charting.ChartArea3DStyle 
$WeekChartArea.Enable3D = $true 
$WeekChart.ChartAreas.Add($WeekChartArea) 
$WeekChart.Series.Add("Data") 
$WeekChart.Series["Data"].Points.DataBindXY($WeekTable.Keys, $WeekTable.Values) 
#$WeekChart.Series["Data"].ChartType = [System.Windows.Forms.DataVisualization.Charting.SeriesChartType]::Pie 
# Display chart on form 
$WeekChart.Anchor = [System.Windows.Forms.AnchorStyles]::Bottom -bor [System.Windows.Forms.AnchorStyles]::Right -bor 
[System.Windows.Forms.AnchorStyles]::Top -bor [System.Windows.Forms.AnchorStyles]::Left 
$Form = New-Object Windows.Forms.Form 
$Form.Text = "Escape Windows XP statistics" 
$Form.Width = 1024 
$Form.Height = 820 
$Form.controls.add($WeekChart) 
$Form.Add_Shown({$Form.Activate()}) 
$Form.ShowDialog() 

의 차트는 내 양식에 잘 나타나 있지만 3D로 표시되지 않습니다, 3D에 나타납니다. Enable3D 속성은 true이어야합니다. 스크립트가 끝났을 때를 확인하면

답변

3

ChartArea3DStyleChartArea 클래스를 상속하지 않으므로 이 아닙니다. 그러나 으로 전화하면 ChartArea처럼 사용하고 있습니다. 나는 그것이 예외를 던지지 않는 이유를 모르지만 그것이 반드시 좋아야하는 것처럼 보인다.

대신 ChartArea을 작성한 다음 Area3DStyle propertyChartArea3DStyle 인스턴스의 값으로 변경해야합니다. ChartArea3DStyle 개체는 ChartArea과 같이 취급하지 마십시오. 하나가 아니기 때문입니다.

$Area3DStyle = New-Object System.Windows.Forms.DataVisualization.Charting.ChartArea3DStyle; 
$Area3DStyle.Enable3D = $true; 
$ChartArea = $WeekChart.ChartAreas.Add('ChartArea'); 
$ChartArea.Area3DStyle = $WeekChartArea; 

3D Windows Forms Chart Screenshot

마지막 스크립트는 다음과 같이 보일 것이다 :

[void][Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") 
[void][Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms.DataVisualization") 
$WeekTable = @{ 
    "Week1" = 50 
    "Week2" = 50 
} 
$WeekChart = New-Object System.Windows.Forms.DataVisualization.Charting.Chart 
$WeekChart.Width = 1200 
$WeekChart.Height = 768 
$Area3DStyle = New-Object System.Windows.Forms.DataVisualization.Charting.ChartArea3DStyle; 
$Area3DStyle.Enable3D = $true; 
$ChartArea = $WeekChart.ChartAreas.Add('ChartArea'); 
$ChartArea.Area3DStyle = $Area3DStyle; 

$ChartSeries = $WeekChart.Series.Add("Data") 
$WeekChart.Series["Data"].Points.DataBindXY($WeekTable.Keys, $WeekTable.Values) 
#$WeekChart.Series["Data"].ChartType = [System.Windows.Forms.DataVisualization.Charting.SeriesChartType]::Pie 
# Display chart on form 
$WeekChart.Anchor = [System.Windows.Forms.AnchorStyles]::Bottom -bor [System.Windows.Forms.AnchorStyles]::Right -bor 
[System.Windows.Forms.AnchorStyles]::Top -bor [System.Windows.Forms.AnchorStyles]::Left 
$Form = New-Object Windows.Forms.Form 
$Form.Text = "Escape Windows XP statistics" 
$Form.Width = 1024 
$Form.Height = 820 
$Form.controls.add($WeekChart) 
$Form.Add_Shown({$Form.Activate()}) 
$Form.ShowDialog() 
+1

+1 그것은 대체 작품'$ ChartArea.Area3DStyle = $ WeekChartArea;'에 의해'$ ChartArea.Area3DStyle = $ Area3DStyle ;'. 나는 대답을 편집하게했다. – JPBlanc

+0

잡아 주셔서 감사합니다, 'JPBlanc'. 내 잘못이야. –