Почему я не могу рисовать на панели, но могу рисовать на самой форме с помощью этого кода?
Я пытаюсь разработать приложение, похожее на краску. Я хочу, чтобы пользователь рисовал на панели, а затем сохранял то, что на ней есть. Я нашел это код онлайн. Он отлично работает на самой форме, но когда я конвертирую его в код ниже, чтобы использовать его на панели, он ничего не показывает и не выдает никаких ошибок.
List drawingRects = new List(); public class DrawingRectangle { public Point Location { get; set; } public Size Size { get; set; } public Point StartPosition { get; set; } public Color DrawingcColor { get; set; } = Color.LightGreen; public float PenSize { get; set; } = 3f; } private void panel1_Paint(object sender, PaintEventArgs e) { if (drawingRects.Count == 0) return; //e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; foreach (var rect in drawingRects) { using (Pen pen = new Pen(rect.DrawingcColor, rect.PenSize)) { e.Graphics.DrawRectangle(pen, new Rectangle(rect.Location, rect.Size)); }; } } private void panel1_MouseMove(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { DrawingRectangle rect = drawingRects.Last(); if (e.Y < rect.StartPosition.Y) { rect.Location = new Point(rect.Location.Y, e.Y); } if (e.X < rect.StartPosition.X) { rect.Location = new Point(e.X, rect.Location.Y); } rect.Size = new Size(Math.Abs(rect.StartPosition.X - e.X), Math.Abs(rect.StartPosition.Y - e.Y)); drawingRects[drawingRects.Count - 1] = rect; this.Invalidate(); } } private void panel1_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { drawingRects.Add(new DrawingRectangle() { Location = e.Location, Size = Size.Empty, StartPosition = e.Location }); } }
Что я уже пробовал:
Я не знаю, что не так с этим кодом, и не мог найти ничего в интернете, но я все еще исследую.