Avoiding slim SeriesChartType.Area aliasing out of existence

165 views Asked by At

Using C# and .Net 4 (I've also tried 4.5.1) I want to draw various areas on a chart representing different timespans, some short, some long. For very short timespans (less than a pixel?) some (but not all) disappear. Different ones disappear as the chart is resized slightly as shown below.

All lines shown Just one shown A couple shown

I can't see any pattern to predict the ones that aren't drawn - see code fragment below...

using System;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;

namespace ChartTest
{
    public partial class Form1 : Form
    {
        public Form1( )
        {
            InitializeComponent( );

            var series = new Series( )
            {
                ChartType = SeriesChartType.Area,
                MarkerStyle = MarkerStyle.None,
                XValueType = ChartValueType.DateTime,
                YAxisType = AxisType.Primary,
            };

            AddLine( DateTime.Parse( "17/6/2015" ), series );
            AddLine( DateTime.Parse( "18/6/2015" ), series );
            AddLine( DateTime.Parse( "19/6/2015" ), series );
            AddLine( DateTime.Parse( "20/6/2015" ), series );
            AddLine( DateTime.Parse( "21/6/2015" ), series );

            chart1.Series.Add( series );
        }

        private static void AddLine( DateTime dateTime, Series series )
        {
            var endTime = dateTime.AddMinutes( 2 );
            series.Points.AddXY( dateTime, 0 );
            series.Points.AddXY( dateTime, 1 );
            series.Points.AddXY( endTime, 1 );
            series.Points.AddXY( endTime, 0 );
        }
    }
}

Anyone know how to avoid this without making the areas arbitrarily wide? Anyone know if I could use the Paint or PrePaint events to adjust the drawing?

Thanks in advance.

0

There are 0 answers