Как такое возможно реализовать??? - 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); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д