Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/34: Рейтинг темы: голосов - 34, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 13.12.2017
Сообщений: 8
1

Рисование круга мышью на PictureBox

27.01.2018, 14:25. Показов 6988. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток, в ходе обучения возник вопрос "а как сделать круг" из имеющиеся функции DrawEllipse - необходимо для задания.
Эллипс - Rectangle rect = new Rectangle(x1, y1, x2 - x1, y2 - y1); (x1 - право, y1 - вниз , x2 - влево, y2 - вверх)
g.DrawEllipse(myPen, rect);
А какие параметры необходимо для создания круга? пожалуйста подскажите, все перепробовал очень хочу доделать.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.01.2018, 14:25
Ответы с готовыми решениями:

Рисование прямоугольника в pictureBox мышью
Всем привет! У меня вот такая проблема.. на форме размещен pictureBox и нужно нарисовать,...

Рисование прямоугольника мышью: фон PictureBox становится черным
Всё просто... необходимо мышью нарисовать прямоугольник на picturebox Прямоугольник рисуется, но...

Перетаскивание мышью компонента pictureBox
собственно говоря сам вопрос указан в теме: как сделать так чтобы можно было перетаскивать мышью...

Перетаскивание мышью объекта Picturebox
собственно есть код: //Создаем random для появления объектов Picturebox в случайных местах формы...

9
0 / 0 / 0
Регистрация: 31.08.2017
Сообщений: 5
27.01.2018, 14:58 2
C#
1
2
3
4
5
6
7
8
9
private void pictureBox1_MouseClick(object sender, MouseEventArgs e)
{
x = e.X; y = e.Y;
}
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.DrawEllipse(Pens.Black, x, y, 15, 15);
pictureBox1.Invalidate();
}
Если хотите сохранять предыдущие эллипсы, то
1) рисуете каждый новый эллипс не на компоненте, а на Bitmap. На компоненте рисуете сам Bitmap.
2) храните список нарисованных эллипсов, занося туда координаты каждого нового. Каждый раз рисуете поочерёдно все эллипсы из списка.
0
29 / 30 / 15
Регистрация: 24.01.2018
Сообщений: 132
27.01.2018, 15:47 3
В форме переменные:
C#
1
2
bool drawing;
int startX, startY;
MouseDown:
C#
1
2
3
startX = e.X;
startY = e.Y;
drawing = true;
MouseMove:
C#
1
2
3
4
5
if (drawing)
{
  e.Graphics.DrawEllipse(Pens.Black, startX, startY, e.X - startX, e.Y - startY);
  pictureBox1.Invalidate();
}
MouseUp:
C#
1
drawing = false;
0
0 / 0 / 0
Регистрация: 13.12.2017
Сообщений: 8
28.01.2018, 00:30  [ТС] 4
Добрый вечер, уже немножко проясняется.
Только у меня 4 направления и мне необходимо задать радиус не в коде, а с помощью мыши растягивать как в функции Эллипса, круг должен быть равным со всех сторон и рисоваться во всех направлениях. То есть если курсор идет вправо(вниз,вверх) то окружность должна увеличиваться вправо, если наоборот то влево, так же и вверх - вниз.
0
3560 / 2501 / 1174
Регистрация: 14.08.2016
Сообщений: 8,206
28.01.2018, 02:59 5
т.е. точка первоначального клика это не центр, а точка окружности, движение мышью - изменение диаметра?
0
0 / 0 / 0
Регистрация: 13.12.2017
Сообщений: 8
28.01.2018, 03:10  [ТС] 6
Да.
0
0 / 0 / 0
Регистрация: 31.08.2017
Сообщений: 5
28.01.2018, 10:10 7
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Boolean Рисовать_ли;
 
Form1_MouseDown
// Если нажата кнопка мыши - MouseDown, то рисовать
            Рисовать_ли = true;
 
Form1_MouseMove
 // Рисование прямоугольника, если нажата кнопка мыши
            if (Рисовать_ли == true)
            {
                // Рисовать прямоугольник в точке (e.X, e.Y)
                var Графика = CreateGraphics();
                Графика.FillRectangle(new SolidBrush(Color.Red),
                                                e.X, e.Y, 10, 10);
                // 10x10 пикселов — размер сплошного прямоугольника
                // e.X, e.Y — координаты указателя мыши
                Графика.Dispose(); // Эквиваент C++: delete Графика
            }
может чем-то поможет
0
0 / 0 / 0
Регистрация: 13.12.2017
Сообщений: 8
28.01.2018, 15:37  [ТС] 8
Добрый день у меня что-то похожее получается, попробуйте - может быть вы поймете как доделать.
g.DrawEllipse(myPen, x1, y1, x2 = y2, y2 = x2); параметры эллипса.
И мне необходимо рисовать окружность Эллипса с одинаковыми параметрами во всех направлениях(влево,вправо,вниз,верх),а не только по главной диагонали.
0
0 / 0 / 0
Регистрация: 31.08.2017
Сообщений: 5
28.01.2018, 23:11 9
Я вас правильно понимаю, вы рисуете мышью круг, затем жмете на его границу и меняете размеры ?
0
0 / 0 / 0
Регистрация: 31.08.2017
Сообщений: 5
29.01.2018, 00:08 10
Вот, смотрите, кликнуть мышью в форме и по горизонтали водите мышью. Если это то, дальше сами дерзайте
Вложения
Тип файла: rar WindowsFormsApp1.rar (143.2 Кб, 93 просмотров)
0
29.01.2018, 00:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.01.2018, 00:08
Помогаю со студенческими работами здесь

Перетаскивание мышью компонента внутри pictureBox
Есть: pictureBox, на нем нарисованый прямоугольник. Нужно: при нажатии на него...

Динамическое создание PictureBox при клике мышью по форме
Здравствуйте! Сегодня решил спросить. А можно сделать так чтобы при каждом нажатии мыши на форме...

Рисование фигур мышью на форме и поворот изображения вокруг курсора
Предмет: Программирование графики Написал программу по заданию. По клику левой кнопки мыши на...

Изменение размеров pictureBox или Panel мышью во время выполнения
Здравствуйте! Вообще я думаю с темы все понятно, мышкой за уголок взял и потащил, может ктото...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru