2011-02-17 16 views
17

Używam formantów wykresów MS asp.net. I używam wykresu radarowego do narysowania pewnych wartości, ale z jakiegoś powodu linie osi X tak naprawdę nie spotykają się w środku.Brzydkie rysowanie wykresu radarowego MS asp.net

Ustawiłem LineWidth = 1, ale linia nadal zajmuje 2 piksele, a niektóre markery są całkowicie wyłączone, a może linia całkowicie wyłączona. Może mój tekst również trochę się skończył, więc proszę zobacz zdjęcie i mam nadzieję, że zrozumiesz mój problem. =)

enter image description here

kod, który generuje wykres:

// 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

można pisać kod, który generuje wykres i definicja wykresu? –

+1

Mam nadzieję, że pomoże to: [http://stackoverflow.com/questions/5013008/how-can-i-draw--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

Spróbuj tego: [1]: http://stackoverflow.com/questions/5013008/how-can-i-draw-a-radar-chart-using-microsoft- chart- control- for -net-framework-3% 5D% 5B1% 5D Mam nadzieję, że to pomoże :) –

Odpowiedz

2

WPF współrzędne odnoszą się do środka piksela, a nie narożnikami, więc spróbuj dodać 0,5 do wszystkich współrzędnych. Aby pokazać to jest w przypadku rozważyć następujące 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> 

Tutaj jest renderowany normalnie, a następnie z 0,5 piksela offsetowego stosowane do każdego współrzędnych:

Xaml lines

Powiązane problemy