powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как захватить сторону прямоугольника при "растягивании" ?
3 сообщений из 3, страница 1 из 1
Как захватить сторону прямоугольника при "растягивании" ?
    #32807422
Sini
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имею приблизительно такой код. Когда начинаю "растягивать" Width прямоугольника (IsCapture = true)
он растягивается на 1-2 мм. и тут же "срывается", а мне нужно чтобы работал без срывов вплоть до события Form1_MouseUp

private void Form1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
// rect - прямоугольник размеры которого я изменяю
if((e.X == rect.Left) || (e.X == rect.Right) )
{
Cursor = Cursors.SizeWE;
IsCapture = true;
}
else
{
Cursor = Cursors.Default;
IsCapture = false;
}

if(e.Button == MouseButtons.Left)
{
if(IsCapture)
{
rect = rs.ResizeTo(rect, new Point(e.X - mouseLast.X, e.Y - mouseLast.Y));
Invalidate();
}
}
mouseLast = new Point(e.X, e.Y);
}
...
Рейтинг: 0 / 0
Как захватить сторону прямоугольника при "растягивании" ?
    #32807539
Алексей Р.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiniИмею приблизительно такой код. Когда начинаю "растягивать" Width прямоугольника (IsCapture = true)
он растягивается на 1-2 мм. и тут же "срывается", а мне нужно чтобы работал без срывов вплоть до события Form1_MouseUp

private void Form1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
// rect - прямоугольник размеры которого я изменяю
if((e.X == rect.Left) || (e.X == rect.Right) )
{
Cursor = Cursors.SizeWE;
IsCapture = true;
}
else
{
Cursor = Cursors.Default;
IsCapture = false;
}

if(e.Button == MouseButtons.Left)
{
if(IsCapture)
{
rect = rs.ResizeTo(rect, new Point(e.X - mouseLast.X, e.Y - mouseLast.Y));
Invalidate();
}
}
mouseLast = new Point(e.X, e.Y);
}

Предположу, что при изменении размера у тебя не в каждый момент времени мышь будет указывать на rect.

Я бы делал примерно так

bool IsCapture = false;
private void Form1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
if(IsCapture)
{
rect = rs.ResizeTo(rect, new Point(e.X - mouseLast.X, e.Y - mouseLast.Y));
Invalidate();
}
mouseLast = new Point(e.X, e.Y);
}

private void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
if((e.X == rect.Left || e.X == rect.Right) && e.Button == MouseButtons.Left )
{
Cursor = Cursors.SizeWE;
IsCapture = true;
}
}

private void Form1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
Cursor = Cursors.Default;
IsCapture = false;
}
...
Рейтинг: 0 / 0
Как захватить сторону прямоугольника при "растягивании" ?
    #32807654
Sini
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо Алексей Р., такой вариант подходит.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как захватить сторону прямоугольника при "растягивании" ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]