2011-02-17 23 views
17

私はMSのasp.netチャートコントロールを使用しています。そして私はいくつかの値を描画するためにレーダーチャートを使用していますが、何らかの理由でX軸の線が本当に真ん中で会わないのです。醜い図面のasp.netレーダーチャート

私はLineWidth = 1を設定しましたが、行はまだ2ピクセルのようになり、マーカーの一部は完全にオフになっているか、完全にオフのラインかもしれません。 私のテキストもちょっと離れているかもしれないので、画像を見てください。うまくいけば私の問題を理解するでしょう。チャートを生成する=)

enter image description here

コード:

// Populate series data 
Chart chart1 = new Chart(); 
chart1.ChartAreas.Add(new ChartArea("ChartArea1")); 

chart1.Height = new Unit(380); 
chart1.Width = new Unit(880); 
//chart1.AntiAliasing = AntiAliasingStyles.Graphics; 
//chart1.BackColor = Color.Transparent; 
chart1.Customize += new EventHandler(Chart_Customize); 

// Show as 3D 
chart1.ChartAreas["ChartArea1"].Area3DStyle.Enable3D = false; 
chart1.ChartAreas["ChartArea1"].AxisY.IntervalAutoMode 
    = IntervalAutoMode.FixedCount; 
chart1.ChartAreas["ChartArea1"].AxisY.Interval = 10; 
chart1.ChartAreas["ChartArea1"].AxisY.Maximum = 100; 

chart1.ChartAreas["ChartArea1"].AxisY.IsReversed = true; 

chart1.ChartAreas[0].AxisY.LineWidth = 1; 
chart1.ChartAreas[0].AxisY.MajorGrid.LineColor = Color.Gray; 
chart1.ChartAreas[0].AxisY.LineColor = Color.Gray; 
chart1.ChartAreas[0].AxisY.MajorTickMark.Enabled = false; 

List<string> names = new List<string>(); 
int namecounter = 1; 
foreach (var p in Model.Participants) 
{ 
    if (SessionHandle.ShowNamesInDiagrams) 
    names.Add(p.Person.Name); 
    else 
    names.Add(namecounter.ToString()); 
    namecounter++; 
} 

#region firstresult 
if (SessionHandle.ShowFirstResult) 
{ 
    chart1.Series.Add(new Series("FirstResult")); 
    List<double> firstresult = new List<double>(); 
    foreach (var p in Model.Participants) 
    { 
    var resultSummary = from r in Model.ResultSummary 
         where r.userID == p.ParentID && Model 
          .Modules 
          .Where(x => x.hasResult) 
          .ToList() 
          .Exists(x => x.ID == r.moduleID) 
         select r; 
    firstresult.Add(resultSummary.Sum(x => x.scorePercent) 
        /Model.Modules.Where(x => x.hasResult).Count()); 
    } 

    chart1.Series["FirstResult"].Points.DataBindXY(names, firstresult); 
    // Set radar chart type 
    chart1.Series["FirstResult"].ChartType = SeriesChartType.Radar; 

    // Set radar chart style (Area, Line or Marker) 
    chart1.Series["FirstResult"]["RadarDrawingStyle"] = "Marker"; 
    chart1.Series["FirstResult"].Color = Color.DarkBlue; 
    chart1.Series["FirstResult"].MarkerImage 
     = Url.Content("~/Content/Images/firstresult.png"); 

    // Set circular area drawing style (Circle or Polygon) 
    chart1.Series["FirstResult"]["AreaDrawingStyle"] = "Circle"; 

    // Set labels style (Auto, Horizontal, Circular or Radial) 
    chart1.Series["FirstResult"]["CircularLabelsStyle"] = "Horizontal"; 
} 
#endregion 
+2

あなたが生成するコードを投稿することができますチャート、およびチャートの定義? –

+1

私はこれが助けてくれることを願っています: [http://stackoverflow.com/questions/5013008/how-can-i-draw-a-radar-chart-using-microsoft-chart-control-for-net-framework -3] [1] [1]:http://stackoverflow.com/questions/5013008/how-can-i-draw-a-radar-chart-using-microsoft-chart-control- for-net-framework-3 – c0D3l0g1c

+0

これを試してください:[1]:http://stackoverflow.com/questions/5013008/how-can-i-draw-a-radar-chart-using-microsoft-chart-control-for -net-framework-3%5D%5B1%5D 希望があります。 –

答えて

2

WPFは、画素の中心ではなく、角部を指すので、すべての座標に0.5を追加してみ座標。このような場合は、次のXAMLを検討している表示するには:

<Canvas> 
<Line X1="50" Y1="50" X2="100" Y2="50" Stroke="Black" StrokeThickness="1" /> 
<Line X1="50" Y1="50" X2="50" Y2="100" Stroke="Black" StrokeThickness="1" /> 
<Line X1="50" Y1="50" X2="100" Y2="100" Stroke="Black" StrokeThickness="1" /> 
</Canvas> 
ここ

それが適用されるオフセット0.5ピクセルで正常にしてからレンダリングされるが、各座標:

Xaml lines