2014-10-10 3 views
0

Im 고전적인 asp.net 차트를 사용하여 일부 데이터를 제공 한 다음이를 PDF에 배치합니다. 내가 풀 수없는 문제는 그래프의 오른쪽에 범례를 추가 할 때 푸시 다운되는 것입니다. 왜 누군가는 볼 수 있습니까?ASP.NET 차트의 정렬

enter image description here

 _chart.Height = _chartHeight; 
    _chart.Width = _chartWidth; 

    Legend legend = new Legend("Default"); 
    legend.LegendStyle = LegendStyle.Column; 
    legend.IsTextAutoFit = false; 
    legend.Docking = Docking.Right; 
    legend.Alignment = System.Drawing.StringAlignment.Near; 

    _chart.Legends.Add(legend); 

    Series series = new Series("Default"); 
    _chart.Series.Add(series); 

    ChartArea chartArea = new ChartArea("ChartArea1"); 
    //chartArea.Position.Y = 0; 
    _chart.ChartAreas.Add(chartArea); 
    //-- this data would usually be collected from _travelRepository.TravelModesForTheYear 
    //-- but for speed I've hardcoded as its same for everyone in country 
    _chart.Series["Default"].Points.DataBindXY(xValues, yValues); 

    System.Drawing.Color[] colours = new System.Drawing.Color[] { _orange, _yellow, _pink, _red, _green, _purple }; 

    int i = 0; 
    foreach (System.Web.UI.DataVisualization.Charting.DataPoint point in _chart.Series["Default"].Points) 
    { 
     _chart.Series["Default"].Points[i].Color = colours[i]; 
     if(showLegends) 
      _chart.Series["Default"].Points[i].Label = "#PERCENT"; 

     i++; 
    } 

    _chart.Series["Default"].ChartType = SeriesChartType.Pie; 

    _chart.Series["Default"]["PieLabelStyle"] = showLegends ? "Inside" : "Disabled"; 
    _chart.Series["Default"].LabelForeColor = System.Drawing.Color.White; 
    _chart.ChartAreas["ChartArea1"].Area3DStyle.Enable3D = false; 
    _chart.ChartAreas["ChartArea1"].AlignmentStyle = AreaAlignmentStyles.Position; 
    _chart.BorderlineWidth = 0; 
    _chart.ChartAreas["ChartArea1"].AxisY.LabelStyle.Enabled = showLegends; 
    _chart.ChartAreas["ChartArea1"].AxisX.LabelStyle.Enabled = showLegends; 
    _chart.ChartAreas["ChartArea1"].AlignmentOrientation = AreaAlignmentOrientations.Horizontal; 
    _chart.Legends[0].Enabled = showLegends; 

답변

0

당신은 전설의 위치 및 IsDockedInsideChartArea을 설정할 수 있습니다. 또한 ChartArea 자체를 배치 할 수 있으므로 움직이지 않습니다. 올바른 값을 얻기 위해서는 약간의 플레이가 필요합니다.

legend.Position.X = 0 
legend.Position.Y = 0 
legend.IsDockedInsideChartArea = False 

area.Position.Height = 94 
area.Position.Width = 98 
area.Position.Y = 0 
area.Position.X = 0