Color не содержит определения для Pen - C#

Узнай цену своей работы

Формулировка задачи:

Color не содержит определения для pen, но ведь я подключил Drawing
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Globalization;
using System.Linq;
using System.Threading;
using System.Windows.Forms;
 
namespace thest
{
    public partial class CalcBio : Form
    {
        #region Свойства
 
        private readonly List<List<PointF>> _points = new List<List<PointF>>
                                                      {
                                                          new List<PointF>(),
                                                          new List<PointF>(),
                                                          new List<PointF>()
                                                      };
 
        private Bitmap _bmp;
 
        private int _days;
 
        private float ScaleX => pictureBox1.Width / 60f;
 
        private int Days
        {
            set
            {
                _days = value;
                hScrollBar1.Visible = _days > 60;
                hScrollBar1.Maximum = value - 60;
            }
        }
 
        #endregion
 
        public CalcBio()
        {
            InitializeComponent();
            ResizeRedraw = true;
            DoubleBuffered = true;
            dateBirth.Value = DateTime.Now.AddMonths(-4);
            SizeChanged += (sender, args) => BuildGraph();
            Load += (sender, args) => BuildGraph();
        }
        private void birthDateDtp_ValueChanged(object sender, EventArgs e)
        {
            Days = (DateTime.Now - dateBirth.Value).Days;
            GetPoints();
        }
        private void BuildGraph()
        {
            GetPoints();
            DrawImage();
            pictureBox1.Invalidate();
        }
        private void tableLayoutPanel2_Paint(object sender, PaintEventArgs e)
        {
 
        }
 
        private void buttonToClose_Click(object sender, EventArgs e)
        {
            Close();
        }
 
        private void buildGraphbutton_Click(object sender, EventArgs e)
        {
            BuildGraph();
        }
        //рисование координатной оси
 
        private void DrawAxis(Graphics g)
        {
            g.TranslateTransform(0, g.ClipBounds.Height / 2);
            //ось
            var end = new PointF(g.ClipBounds.Right, 0);
            g.DrawLine(Color.Gray.(1.5f), new PointF(), end);
            //стрелка
            g.FillPath(Brushes.DarkGray, GetArrow(new Point(), end));
            //подписи к оси
            for (var i = 5; i < 60; i += 5)
            {
                var text = string.Format("{0} дн.", i + hScrollBar1.Value);
                var size = g.MeasureString(text, Font);
                var pt = new PointF(i * ScaleX, 2);
                g.DrawLine(Color.DarkGray.Pen(), pt.X, pt.Y, pt.X, pt.Y - 5);
                pt.X -= size.Width / 2;
                g.DrawString(text, Font, SystemBrushes.ActiveCaptionText, pt);
            }
        }
 
        //рисование графиков
 
        private void DrawImage()
        {
            if (_bmp != null)
            {
                _bmp.Dispose();
                if (_days <= 0) return;
            }
            var maxX = _points.Select(l => l.Max(p => p.X)).Max();
            _bmp = new Bitmap((int)maxX, pictureBox1.Height);
            //максимальное значение в трех графиках по Y
            var maxY = _points.Select(l => l.Max(p => p.Y)).Max();
            var minY = _points.Select(l => l.Min(p => p.Y)).Min();
            var scaleY = _bmp.Height * 0.95f / (maxY - minY);
 
            using (var g = Graphics.FromImage(_bmp))
            {
                g.TranslateTransform(0, _bmp.Height / 2f);
                g.ScaleTransform(1, scaleY);
 
                g.DrawCurve(Color.Red.Pen(1 / scaleY), _points[0].ToArray());
                g.DrawCurve(Color.Green.Pen(1 / scaleY), _points[1].ToArray());
                g.DrawCurve(Color.Blue.Pen(1 / scaleY), _points[2].ToArray());
            }
        }
 
        //функция
 
        private static float func(int i, int P)
        {
            return (float)Math.Sin(2 * Math.PI * i / P) * 100;
        }
 
        //рисование отрезка со стрелкой
        //start Начало отрезка
        //end Конец отрезка
        //h Раствор стрелки
        //l Длина стрелки
        private static GraphicsPath GetArrow(PointF start, PointF end, float h = 7, float l = 30)
        {
            var gp = new GraphicsPath();
            //вектора
            var v = new PointF(end.X - start.X, end.Y - start.Y);
            //длина
            var len = (float)Math.Sqrt(v.X * v.X + v.Y * v.Y);
            //нормированный вектор
            var norm = new PointF(v.X / len, v.Y / len);
            //отступаем на длину стрелки
            var pt = new PointF(end.X - l * norm.X, end.Y - l * norm.Y);
            //нормали для раствора стрелки
            var n1 = new PointF(-norm.Y * h / 2 + pt.X, norm.X * h / 2 + pt.Y);
            var n2 = new PointF(norm.Y * h / 2 + pt.X, -norm.X * h / 2 + pt.Y);
            gp.StartFigure();
            gp.AddLine(n1, end);
            gp.AddLine(end, n2);
            return gp;
        }
        //     Точки графика
 
        private void GetPoints()
        {
            _points[0].Clear();
            _points[1].Clear();
            _points[2].Clear();
            for (var i = 0; i < _days; i++)
            {
                _points[0].Add(new PointF(i * ScaleX, func(i, 23)));
                _points[1].Add(new PointF(i * ScaleX, func(i, 28)));
                _points[2].Add(new PointF(i * ScaleX, func(i, 33)));
            }
        }
 
        private void hScrollBar1_Scroll(object sender, ScrollEventArgs e)
        {
            pictureBox1.Invalidate();
        }
 
        private void pictureBox1_Paint(object sender, PaintEventArgs e)
        {
            if (_bmp == null)
                return;
            DrawImage();
            //смещение графика по скролу
            var scroll = hScrollBar1.Visible ? hScrollBar1.Value : 0;
            e.Graphics.SmoothingMode = SmoothingMode.HighQuality;
            e.Graphics.DrawImage(_bmp, -scroll * ScaleX, 0);
            DrawAxis(e.Graphics);
        }
    }
}

Решение задачи: «Color не содержит определения для Pen»

textual
Листинг программы
g.DrawCurve(new Pen(Color.Red), ...);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5
Похожие ответы