Как сделать фигуру доступной для выбора в WinFormC#

Место общения программистов C#
Ответить
Гость
 Как сделать фигуру доступной для выбора в WinForm

Сообщение Гость »

У меня есть проект WinForm на C# со следующим кодом для рисования прямоугольников и эллипсов:

Код: Выделить всё

public partial class Form1 : Form
{

List _rectangles = new();
List _ellipses = new();
Rectangle _rectInProgress;

bool DrawingRectangle = false;
bool DrawingEllipse = false;

public Form1()
{
InitializeComponent();
DoubleBuffered = true;
}

private void Form1_Load(object sender, EventArgs e)
{

}

private void Form1_MouseDown(object sender, MouseEventArgs e)
{
if (DrawingRectangle || DrawingEllipse)
{
_rectInProgress = new Rectangle(e.Location, new Size());
}
}

private void Form1_MouseMove(object sender, MouseEventArgs e)
{
if (MouseButtons == MouseButtons.Left && (DrawingRectangle || DrawingEllipse))
{
_rectInProgress.Width = e.Location.X - _rectInProgress.X;
_rectInProgress.Height = e.Location.Y - _rectInProgress.Y;
Invalidate();
}
}

private void Form1_MouseUp(object sender, MouseEventArgs e)
{
if (DrawingRectangle)
{
_rectangles.Add(_rectInProgress);
Invalidate();
}
else if (DrawingEllipse)
{
_ellipses.Add(_rectInProgress);
Invalidate();
}
}

private void Form1_Paint(object sender, PaintEventArgs e)
{

if (_rectangles.Any())
{
e.Graphics.DrawRectangles(new Pen(Color.Blue, 3), _rectangles.ToArray());
}
if (_ellipses.Any())
{
foreach (var ell in _ellipses)
{
e.Graphics.DrawEllipse(new Pen(Color.Blue, 3), ell);
}
}
if (MouseButtons == MouseButtons.Left)
{
if (DrawingEllipse)
{
e.Graphics.DrawEllipse(new Pen(Color.Red, 3), _rectInProgress);
}
else if (DrawingRectangle)
{
e.Graphics.DrawRectangle(new Pen(Color.Red, 3), _rectInProgress);
}
}
}

private void button1_Click(object sender, EventArgs e)
{
DrawingRectangle = !DrawingRectangle;
DrawingEllipse = false;
}

private void button2_Click(object sender, EventArgs e)
{
DrawingEllipse = !DrawingEllipse;
DrawingRectangle = false;
}
}
Следующий шаг — сделать фигуры доступными для выбора, чтобы можно было изменять их размер. Я новичок в подобных вещах, поэтому понятия не имею, с чего начать. Я нашел много примеров в Интернете, но все они имеют одну общую черту: они проверяют, щелкнул ли курсор ВНУТРИ фигуры. Мне нужно проверить, щелкнул ли курсор НА фигуре (границах).
Есть какие-нибудь советы, как действовать? Заранее спасибо!

Подробнее здесь: https://stackoverflow.com/questions/782 ... in-winform
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»