예제 #1
0
        protected void DrawTraceCustomAttributes(PaintArgs p, PlotXAxis xAxis, PlotYAxis yAxis)
        {
            PlotDataPointTrace plotDataPointTrace  = null;
            PlotDataPointTrace plotDataPointTrace2 = null;
            Brush brush = ((IPlotBrush)this.Fill.Brush).GetBrush(p, base.BoundsClip);

            this.m_FillRefPixel = yAxis.ValueToPixels(this.Reference);
            for (int i = this.IndexDrawStart; i <= this.IndexDrawStop; i++)
            {
                PlotDataPointTrace plotDataPointTrace3 = base.m_Data[i] as PlotDataPointTrace;
                if (plotDataPointTrace3.Null)
                {
                    plotDataPointTrace  = null;
                    plotDataPointTrace2 = null;
                }
                else if (!plotDataPointTrace3.Empty)
                {
                    if (plotDataPointTrace == null)
                    {
                        plotDataPointTrace = plotDataPointTrace3;
                    }
                    else
                    {
                        plotDataPointTrace2 = plotDataPointTrace3;
                        if (plotDataPointTrace2.Trace.Visible)
                        {
                            this.DrawLine(p, xAxis, yAxis, ((IPlotPen)plotDataPointTrace2.Trace).GetPen(p), plotDataPointTrace, plotDataPointTrace2, brush);
                        }
                        plotDataPointTrace = plotDataPointTrace2;
                    }
                }
            }
        }
예제 #2
0
        protected override void Draw(PaintArgs p, PlotXAxis xAxis, PlotYAxis yAxis)
        {
            Pen       pen = ((IPlotPen)base.Fill.Pen).GetPen(p);
            int       dataViewXPixelsMin = base.GetDataViewXPixelsMin();
            int       dataViewXPixelsMax = base.GetDataViewXPixelsMax();
            int       num       = yAxis.ValueToPixels(this.YStart);
            int       num2      = dataViewXPixelsMax;
            int       num3      = num;
            int       num4      = dataViewXPixelsMin;
            int       num5      = yAxis.ValueToPixels(this.YStop);
            int       num6      = dataViewXPixelsMax;
            int       num7      = num5;
            int       num8      = dataViewXPixelsMin;
            Rectangle rectangle = iRectangle.FromLTRB(base.XYSwapped, num2, num5, num8, num);

            this.m_HitRectStart = iRectangle.FromLTRB(base.XYSwapped, num2, num - base.HitRegionSize, num4, num3 + base.HitRegionSize);
            this.m_HitRectStop  = iRectangle.FromLTRB(base.XYSwapped, num6, num5 - base.HitRegionSize, num8, num7 + base.HitRegionSize);
            this.m_HitRectInner = rectangle;
            this.m_HitRectInner.Inflate(0, -base.HitRegionSize);
            if (base.Fill.Brush.Visible)
            {
                Brush brush = ((IPlotBrush)base.Fill.Brush).GetBrush(p, rectangle);
                p.Graphics.FillRectangle(brush, rectangle);
            }
            if (base.Fill.Pen.Visible)
            {
                if (base.XYSwapped)
                {
                    p.Graphics.DrawLine(pen, num, num2, num3, num4);
                    p.Graphics.DrawLine(pen, num5, num6, num7, num8);
                }
                else
                {
                    p.Graphics.DrawLine(pen, num2, num, num4, num3);
                    p.Graphics.DrawLine(pen, num6, num5, num8, num7);
                }
            }
            base.Bounds = Rectangle.Union(this.m_HitRectStart, this.m_HitRectStop);
        }
예제 #3
0
        protected override void Draw(PaintArgs p, PlotXAxis xAxis, PlotYAxis yAxis)
        {
            Pen pen = ((IPlotPen)base.Line).GetPen(p);
            int num = yAxis.ValueToPixels(this.YReference);
            int dataViewXPixelsMin = base.GetDataViewXPixelsMin();
            int dataViewXPixelsMax = base.GetDataViewXPixelsMax();

            if (base.XYSwapped)
            {
                p.Graphics.DrawLine(pen, num, dataViewXPixelsMin, num, dataViewXPixelsMax);
            }
            else
            {
                p.Graphics.DrawLine(pen, dataViewXPixelsMin, num, dataViewXPixelsMax, num);
            }
            base.Bounds = iRectangle.FromLTRB(base.XYSwapped, dataViewXPixelsMin, num - base.HitRegionSize, dataViewXPixelsMax, num + base.HitRegionSize);
        }
예제 #4
0
 private void DrawTraceFastDraw(PaintArgs p, PlotXAxis xAxis, PlotYAxis yAxis)
 {
     this.m_TraceFastDraw.P            = p;
     this.m_TraceFastDraw.XAxis        = xAxis;
     this.m_TraceFastDraw.YAxis        = yAxis;
     this.m_TraceFastDraw.Pen          = ((IPlotPen)this.Trace).GetPen(p);
     this.m_TraceFastDraw.TraceVisible = this.Trace.Visible;
     this.m_TraceFastDraw.XYSwapped    = base.XYSwapped;
     this.m_TraceFastDraw.FillVisible  = (this.Fill.Visible && this.Fill.Brush.Visible);
     this.m_TraceFastDraw.FillBrush    = ((IPlotBrush)this.Fill.Brush).GetBrush(p, base.BoundsClip);
     this.m_TraceFastDraw.FillRefPixel = yAxis.ValueToPixels(this.Reference);
     this.m_TraceFastDraw.Reset();
     for (int i = this.IndexDrawStart; i <= this.IndexDrawStop; i++)
     {
         this.m_TraceFastDraw.AddDataPoint(this[i]);
     }
     this.m_TraceFastDraw.DrawFlush();
 }
예제 #5
0
        protected override void Draw(PaintArgs p, PlotXAxis xAxis, PlotYAxis yAxis)
        {
            this.m_FillRefPixel = yAxis.ValueToPixels(this.Reference);
            this.m_XPixelMin    = xAxis.ValueToPixels(xAxis.Min);
            this.m_XPixelMax    = xAxis.ValueToPixels(xAxis.Max);
            if (this.m_XPixelMax < this.m_XPixelMin)
            {
                Math2.Switch(ref this.m_XPixelMax, ref this.m_XPixelMin);
            }
            int num = this.m_XPixelMax - this.m_XPixelMin;

            if (num < 1)
            {
                this.m_PixelYValues = null;
            }
            else
            {
                if (this.m_PixelYValues == null)
                {
                    this.m_PixelYValues = new double[num];
                }
                if (this.m_PixelYValues.Length != num)
                {
                    this.m_PixelYValues = new double[num];
                }
            }
            if (this.m_PixelYValues != null)
            {
                for (int i = 0; i < this.m_PixelYValues.Length; i++)
                {
                    this.m_PixelYValues[i] = 1E+305;
                }
            }
            if (this.Trace.Visible && this.Count > 1)
            {
                this.DrawTraceCustomAttributes(p, xAxis, yAxis);
            }
            this.DrawMarkers(p, xAxis, yAxis, this.Markers);
        }
예제 #6
0
 protected override void Draw(PaintArgs p, PlotXAxis xAxis, PlotYAxis yAxis)
 {
     this.m_FirstDrawComplete = true;
     if (!base.Designing && this.ImageXAutoSetup && !this.m_ImageXAutoSetupComplete)
     {
         this.ImageXSamples             = xAxis.ScaleDisplay.PixelsSpan;
         this.ImageXSpanSamples         = xAxis.ScaleDisplay.PixelsSpan;
         this.ImageXMin                 = xAxis.Min;
         this.ImageXSpan                = xAxis.Span;
         this.m_ImageXAutoSetupComplete = true;
     }
     if (!base.Designing && this.ImageYAutoSetup && !this.m_ImageYAutoSetupComplete)
     {
         this.ImageYSamples             = yAxis.ScaleDisplay.PixelsSpan;
         this.ImageYSpanSamples         = yAxis.ScaleDisplay.PixelsSpan;
         this.ImageYMin                 = yAxis.Min;
         this.ImageYSpan                = yAxis.Span;
         this.m_ImageXAutoSetupComplete = true;
     }
     if (!(xAxis.Min > this.ImageXMax) && !(xAxis.Max < this.ImageXMin) && !(yAxis.Min > this.ImageYMax) && !(yAxis.Max < this.ImageYMin))
     {
         double num  = xAxis.Min;
         double num2 = xAxis.Max;
         double num3 = yAxis.Min;
         double num4 = yAxis.Max;
         if (num < this.ImageXMin)
         {
             num = this.ImageXMin;
         }
         if (num2 > this.ImageXMax)
         {
             num2 = this.ImageXMax;
         }
         if (num3 < this.ImageYMin)
         {
             num3 = this.ImageYMin;
         }
         if (num4 > this.ImageYMax)
         {
             num4 = this.ImageYMax;
         }
         Rectangle rectangle = iRectangle.FromLTRB(base.XYSwapped, xAxis.ValueToPixels(num), yAxis.ValueToPixels(num3), xAxis.ValueToPixels(num2), yAxis.ValueToPixels(num4));
         Point[]   array     = new Point[3];
         if (!base.XYSwapped)
         {
             if (!xAxis.Reverse && !yAxis.Reverse)
             {
                 array[0] = new Point(rectangle.Left, rectangle.Bottom);
                 array[1] = new Point(rectangle.Right, rectangle.Bottom);
                 array[2] = new Point(rectangle.Left, rectangle.Top);
             }
             else if (!xAxis.Reverse && yAxis.Reverse)
             {
                 array[0] = new Point(rectangle.Left, rectangle.Top);
                 array[1] = new Point(rectangle.Right, rectangle.Top);
                 array[2] = new Point(rectangle.Left, rectangle.Bottom);
             }
             else if (xAxis.Reverse && !yAxis.Reverse)
             {
                 array[0] = new Point(rectangle.Right, rectangle.Bottom);
                 array[1] = new Point(rectangle.Left, rectangle.Bottom);
                 array[2] = new Point(rectangle.Right, rectangle.Top);
             }
             else
             {
                 array[0] = new Point(rectangle.Right, rectangle.Top);
                 array[1] = new Point(rectangle.Left, rectangle.Top);
                 array[2] = new Point(rectangle.Right, rectangle.Bottom);
             }
         }
         else if (!xAxis.Reverse && !yAxis.Reverse)
         {
             array[0] = new Point(rectangle.Left, rectangle.Bottom);
             array[1] = new Point(rectangle.Left, rectangle.Top);
             array[2] = new Point(rectangle.Right, rectangle.Bottom);
         }
         else if (!xAxis.Reverse && yAxis.Reverse)
         {
             array[0] = new Point(rectangle.Right, rectangle.Bottom);
             array[1] = new Point(rectangle.Right, rectangle.Top);
             array[2] = new Point(rectangle.Left, rectangle.Bottom);
         }
         else if (xAxis.Reverse && !yAxis.Reverse)
         {
             array[0] = new Point(rectangle.Left, rectangle.Top);
             array[1] = new Point(rectangle.Left, rectangle.Bottom);
             array[2] = new Point(rectangle.Right, rectangle.Top);
         }
         else
         {
             array[0] = new Point(rectangle.Right, rectangle.Top);
             array[1] = new Point(rectangle.Right, rectangle.Bottom);
             array[2] = new Point(rectangle.Left, rectangle.Top);
         }
         int       left    = this.ValueToImageSampleX(num);
         int       right   = this.ValueToImageSampleX(num2);
         int       top     = this.ValueToImageSampleY(num4);
         int       bottom  = this.ValueToImageSampleY(num3);
         Rectangle srcRect = iRectangle.FromLTRB(left, top, right, bottom);
         srcRect = new Rectangle(srcRect.Left, srcRect.Top, srcRect.Width, srcRect.Height);
         p.Graphics.DrawImage(this.m_Image, array, srcRect, GraphicsUnit.Pixel);
     }
 }
예제 #7
0
        protected override void Draw(PaintArgs p, PlotXAxis xAxis, PlotYAxis yAxis)
        {
            this.m_FillRefPixel = yAxis.ValueToPixels(this.Reference);
            this.m_XPixelMin    = xAxis.ValueToPixels(xAxis.Min);
            this.m_XPixelMax    = xAxis.ValueToPixels(xAxis.Max);
            if (this.m_XPixelMax < this.m_XPixelMin)
            {
                Math2.Switch(ref this.m_XPixelMax, ref this.m_XPixelMin);
            }
            int num = this.m_XPixelMax - this.m_XPixelMin;

            if (num < 1)
            {
                this.m_PixelYValues = null;
            }
            else
            {
                if (this.m_PixelYValues == null)
                {
                    this.m_PixelYValues = new double[num];
                }
                if (this.m_PixelYValues.Length != num)
                {
                    this.m_PixelYValues = new double[num];
                }
            }
            if (this.m_PixelYValues != null)
            {
                for (int i = 0; i < this.m_PixelYValues.Length; i++)
                {
                    this.m_PixelYValues[i] = 1E+305;
                }
            }
            if (this.Trace.Visible && this.Count > 1)
            {
                int j    = 0;
                int num2 = 0;
                int num3 = 0;
                for (; j < this.Count; j++)
                {
                    if (this[j].Null)
                    {
                        if (num3 - num2 > 1)
                        {
                            this.SplineCalculations(num3 - num2 + 1, num2, num2 + 1, num3, num3 - 1);
                            this.DrawTraceCustomAttributes(p, xAxis, yAxis, num2, num3);
                            num2 = j + 1;
                            num3 = num2;
                        }
                    }
                    else
                    {
                        num3 = j;
                    }
                }
                if (num3 - num2 > 1)
                {
                    this.SplineCalculations(num3 - num2 + 1, num2, num2 + 1, num3, num3 - 1);
                    this.DrawTraceCustomAttributes(p, xAxis, yAxis, num2, num3);
                }
            }
            this.DrawMarkers(p, xAxis, yAxis, this.Markers);
        }
예제 #8
0
 private void DrawTrace(PaintArgs p, PlotXAxis xAxis, PlotYAxis yAxis)
 {
     if (this.Count >= 2)
     {
         PlotDataPointDifferential plotDataPointDifferential = new PlotDataPointDifferential(this);
         ((IPlotBrush)this.Fill.Brush).GetBrush(p, base.BoundsClip);
         this.m_TraceFastDraw.P            = p;
         this.m_TraceFastDraw.XAxis        = xAxis;
         this.m_TraceFastDraw.YAxis        = yAxis;
         this.m_TraceFastDraw.Pen          = ((IPlotPen)this.Trace).GetPen(p);
         this.m_TraceFastDraw.TraceVisible = this.Trace.Visible;
         this.m_TraceFastDraw.XYSwapped    = base.XYSwapped;
         this.m_TraceFastDraw.FillVisible  = (this.Fill.Visible && this.Fill.Brush.Visible);
         this.m_TraceFastDraw.FillBrush    = ((IPlotBrush)this.Fill.Brush).GetBrush(p, base.BoundsClip);
         this.m_TraceFastDraw.FillRefPixel = yAxis.ValueToPixels(this.Reference);
         this.m_TraceFastDraw.Reset();
         this.m_TraceFastDraw.Reset();
         int num = -1;
         for (int i = this.IndexDrawStart; i <= this.IndexDrawStop; i++)
         {
             if (base.GetValid(i))
             {
                 if (num == -1)
                 {
                     this.m_TraceFastDraw.AddDataPoint(this[i]);
                     num = i;
                 }
                 else if (this[num].Y != this[i].Y)
                 {
                     base.DataPointInitializing  = true;
                     plotDataPointDifferential.X = this[i].X;
                     plotDataPointDifferential.Y = this[num].Y;
                     base.DataPointInitializing  = false;
                     this.m_TraceFastDraw.AddDataPoint(plotDataPointDifferential);
                     this.m_TraceFastDraw.AddDataPoint(this[i]);
                 }
                 else
                 {
                     this.m_TraceFastDraw.AddDataPoint(this[i]);
                 }
                 num = i;
             }
             else if (!this.GetEmpty(i) && this.GetNull(i))
             {
                 this.m_TraceFastDraw.AddDataPoint(this[i]);
                 num = -1;
             }
         }
         if (num != -1 && !this.Terminated)
         {
             base.DataPointInitializing = true;
             if (base.DataDirection == DataDirection.Increasing)
             {
                 plotDataPointDifferential.X = base.XAxis.Max;
             }
             else
             {
                 plotDataPointDifferential.X = base.XAxis.Min;
             }
             plotDataPointDifferential.Y = this[num].Y;
             base.DataPointInitializing  = false;
             this.m_TraceFastDraw.AddDataPoint(plotDataPointDifferential);
         }
         this.m_TraceFastDraw.DrawFlush();
     }
 }