コード例 #1
0
        internal static Bitmap CreatePowerCurvePreview(ArcticFoxConfiguration.PowerCurve powerCurve, Size size)
        {
            const float percentMaxValue = 250;

            var actualMaxTime = powerCurve.Points.Max(x => x.Time) / 10f;
            var actualWidth   = size.Width - 1;
            var actualHeight  = size.Height - 1;

            var bitmap = new Bitmap(size.Width, size.Height);

            using (var gfx = Graphics.FromImage(bitmap))
            {
                gfx.Clear(Color.White);

                var chartPoints = new PointF[powerCurve.Points.Length];
                for (var i = 0; i < powerCurve.Points.Length; i++)
                {
                    var powerPoint = powerCurve.Points[i];
                    var xRaw       = powerPoint.Time / 10f;
                    var yRaw       = powerPoint.Percent;

                    // 4 is a sum of 2 pixel paddings from left and right.
                    var x = xRaw * (actualWidth - 4) / actualMaxTime;
                    var y = actualHeight - yRaw * actualHeight / percentMaxValue;

                    // Realize padding from left by 2 pixels.
                    chartPoints[i] = new PointF(x + 2, y);
                }

                DrawGrid(gfx, 10, 5, actualWidth, actualHeight);
                gfx.DrawLines(new Pen(Color.YellowGreen, 1), chartPoints);
                gfx.DrawRectangle(Pens.LightGray, 0, 0, actualWidth, actualHeight);
            }
            return(bitmap);
        }
コード例 #2
0
        public PowerCurveProfileWindow([NotNull] ArcticFoxConfiguration.PowerCurve curve)
        {
            if (curve == null)
            {
                throw new ArgumentNullException("curve");
            }

            m_curve = curve;

            InitializeComponent();
            InitializeChart();
            InitializeControls();
            InitializeWorkspace();

            Load += (s, e) => ZoomChart(m_timeFrame);
        }