Как такое возможно реализовать??? - C#

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

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

Доброго времени суток! С# я начал изучать недавно и вот появилась такая задача… Нужно сделать такую программу, в которой пользователь при каждом щелчке мыши в любом месте формы, появился бы объект, в месте где был произведен щелчок, в виде закрашенного круга! Притом объекты должны быть таковыми, чтоб я в дальнейшем мог изменить цвет каждого из них и мог перетаскивать их! Как такое возможно реализовать??? Пробовал через
Graphics graph = CreateGraphics(); 
graph.FillEllipse(Brushes.Black, e.X - 25, e.Y - 25, 50, 50);
, но тут, как я понял,не создаётся нового объекта и в последствии я не могу сменить цвет, притом при перерисовки всё то что было нарисовано стирается. Заранее Спасибо!

Решение задачи: «Как такое возможно реализовать???»

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace CrazyPainter
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            selectedColor= Brushes.Green;
            this.Pics = new List<Circle>();
            this.comboBox1.Items.Add("Red");
            this.comboBox1.Items.Add("Green");
            this.comboBox1.Items.Add("Gray");
        }
 
        List<Circle> Pics;
 
        public Brush selectedColor;
 
        public const int Radius = 5;
 
        private void Form1_MouseClick(object sender, MouseEventArgs e)
        {
            this.Pics.Add(new Circle(new Rectangle(new Point(e.X-Radius,e.Y-Radius),new Size(Radius*2,Radius*2))));
            this.Invalidate();
        }
 
        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);
            foreach (Circle picture in Pics)
            {
                picture.ReDraw(selectedColor, e.Graphics);
            }
        }
 
        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            switch (this.comboBox1.SelectedItem.ToString())
            {
                case "Red":
                    this.selectedColor = Brushes.Red;
                    break;
                case "Green":
                    this.selectedColor = Brushes.Green;
                    break;
                case "Gray":
                    this.selectedColor = Brushes.Gray;
                    break;
            }
        }
    }
 
    public class Circle
    {
        private readonly Rectangle _border;
 
        public Rectangle Border
        {
            get { return _border; }            
        }
 
        public Brush Background;
        public Circle(Rectangle rect)
        {
            this._border = rect;
        }
 
        public Circle(Rectangle rect, Brush bgcolor)
            : this(rect)
        {
            this.Background = bgcolor;
        }
 
        public void Draw(Graphics g)
        {
            g.FillEllipse(this.Background, this._border);
        }
 
        public void ReDraw(Brush bgcolor,Graphics g)
        {
            this.Background = bgcolor;
            this.Draw(g);
        }
 
        public void Dispose(Graphics g)
        {
            this.Background = Brushes.Transparent;
            this.Draw(g);
        }
    }
}

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


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

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

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