Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
 Аватар для Twi7ter
3 / 3 / 2
Регистрация: 27.03.2013
Сообщений: 147

Создание OvalShape по клику

29.12.2013, 22:36. Показов 2261. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Хотел чтобы по клику на форме в том месте где клику создавался OvalShape .Перерыл весь инет,ничего путного кроме как функций для определения координат курсора не нашел.Допустим ч/з Cursor.Position.Y,X определили координаты где создадим объект а что дальше?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.12.2013, 22:36
Ответы с готовыми решениями:

Динамическое создание объекта OvalShape в c#
Не удается динамически создать OvalShape в c#. На форуме нашел много примеров по созданию кнопок, лейблов и т.д., но описанные способы не...

Динамическое создание объекта OvalShape в c#
Не удается динамически создать OvalShape в c#. На форуме нашел много примеров по созданию кнопок, лейблов и т.д., но описанные способы не...

Создание контролов по клику
Хотел сделать чтобы по клику у меня создавался объект какой то допустим OvalShape,почему нельзя скопировать код который в дизайнере форме...

10
 Аватар для Kruds
708 / 708 / 226
Регистрация: 04.03.2013
Сообщений: 1,384
29.12.2013, 23:06
Обработайте нужное событие формы. В данном случае MouseClick, например так:
C#
1
2
3
4
5
private void Form1_MouseClick(object sender, MouseEventArgs e)
{
    Graphics g = (sender as Control).CreateGraphics();
    g.DrawEllipse(new Pen(new SolidBrush(Color.Black), 2), new Rectangle(e.X, e.Y, 30, 20));
}
1
 Аватар для Twi7ter
3 / 3 / 2
Регистрация: 27.03.2013
Сообщений: 147
08.01.2014, 23:51  [ТС]
Kruds, появилась необходимость в том чтобы по клику на кружок он менял цвет,как это можно сделать?Можно с этими кружками как то потом работать вообще?
0
 Аватар для lpvoid
324 / 307 / 59
Регистрация: 06.03.2013
Сообщений: 869
09.01.2014, 08:26
Twi7ter, отловите координаты мыши по click, проверьте, попадают ли они в область, занятую кружком, и, если попадают, дерните graphics за invalidate и нарисуйте круг заново нового цвета.
1
 Аватар для Twi7ter
3 / 3 / 2
Регистрация: 27.03.2013
Сообщений: 147
09.01.2014, 13:02  [ТС]
Kruds, почему если рисовать в pictureBox, то кружки не в том месте где клик происходил рисуются?
C#
1
2
3
4
5
6
7
8
9
    private void pictureBox1_Click(object sender, EventArgs e)
        {
              Graphics g = (sender as Control).CreateGraphics();
           
                g.DrawEllipse(new Pen(new SolidBrush(Color.Blue),4),new Rectangle(Cursor.Position.X,Cursor.Position.Y,7,8));
            
                 
          
        }
0
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
09.01.2014, 13:08
Цитата Сообщение от Twi7ter Посмотреть сообщение
почему если рисовать в pictureBox, то кружки не в том месте где клик происходил рисуются?
Потому что ты используешь объект Cursor из формы, и он содержит координаты курсора относительно формы, а не picturebox. Проще использовать событие MouseClick, а не Click, как тебе и показали
1
 Аватар для Twi7ter
3 / 3 / 2
Регистрация: 27.03.2013
Сообщений: 147
09.01.2014, 19:36  [ТС]
можно поподробнее про
Цитата Сообщение от lpvoid Посмотреть сообщение
дерните graphics за invalidate и нарисуйте круг заново нового цвета.
0
 Аватар для lpvoid
324 / 307 / 59
Регистрация: 06.03.2013
Сообщений: 869
09.01.2014, 19:51
Twi7ter, прошу прощения, ошибся. у того контрола, на котором вы рисуете, есть метод Invalidate. говоря в общем, он очистит то, что нарисовано на контроле (на самом деле работает несколько по-другому, но в общем смысл выше). его нужно и вызывать.
Control.Invalidate
System.Drawing.Graphics class
System.Windows.Forms.Control class
0
 Аватар для Twi7ter
3 / 3 / 2
Регистрация: 27.03.2013
Сообщений: 147
12.01.2014, 01:09  [ТС]
не могли бы вы объяснить что
C#
1
Graphics g = (sender as Control).CreateGraphics();
делает ? точнее мне не понятна вот эта часть
C#
1
(sender as Control)
0
192 / 199 / 82
Регистрация: 11.04.2013
Сообщений: 1,086
12.01.2014, 11:35
(sender as Control) - приведение к типу.
sender - объект, по которому кликнули.

Добавлено через 47 минут
Twi7ter,

C#
1
2
3
4
5
6
  object i = 1;
           
 
           Console.WriteLine((int) i);
           
           Console.WriteLine(i as int?);
1
 Аватар для Twi7ter
3 / 3 / 2
Регистрация: 27.03.2013
Сообщений: 147
12.01.2014, 21:19  [ТС]
при удалении кружка по клику кружок удаляется из списка,но почему то все кружки стираются потом с pictureBox:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
    class point
    {
       public int X;
       public int Y;
       public Rectangle rec;
 
       public SolidBrush brush;
 
 
        public point(int X, int Y,  int countPoints,Graphics g )
        {
            this.X = X;
            this.Y = Y;
           
 
 
             rec = new Rectangle(X, Y, 12, 12);
            brush=new SolidBrush(Color.AliceBlue);
            g.DrawEllipse(new Pen(brush, 12), rec);
 
     
            g.DrawString(countPoints.ToString(), new Font("Arial", 7), new SolidBrush(Color.Black), X, Y);
 
 
 
        }




C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
      private void pictureBox1_MouseClick(object sender, MouseEventArgs e)
        {
 
 
            if (e.Button == MouseButtons.Left)
            {
                countPoints++;//cчитаем кол-во кружков
                textBox1.Text = countPoints.ToString();
 
                Graphics g = (sender as Control).CreateGraphics();
                PointList.Add(new point(e.X, e.Y, countPoints, g));
            }
 
 
            if (e.Button == MouseButtons.Right)
            {
                for (int j = 0; j < PointList.Count; j++)
                {
                    if (PointList[j].rec.Contains(e.Location))
                    {
                        PointList.RemoveAt(j);
                        pictureBox1.Refresh();
                    }
                }
 
            }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.01.2014, 21:19
Помогаю со студенческими работами здесь

Создание ячеек по клику из другого класса
Всем привет, чет ни как не пойму как реализовать метод создания полей в таблице если вызвать из формы ...

Создание кнопок по клику другой кнопки
Добрый день. Надеюсь, что тут смогут помочь. Подскажите как реализовать следующий механизм. На форме есть кнопка &quot;Добавить...

Движение по окружности ovalShape
Здравствуйте! Сегодня столкнулся с такой вот задачей, как заставить ovalshape (круг) двигаться по окружности, т.е. чтобы ovalShape касался...

Создание обьекта пользовательского типа по клику кнопки
Есть некий пользовательский класс users, стоит задача по клику кнопки скрыть все элементы формы, создать таблицу для отображение юзеров, и...

Создание стрелки с заданием координат по клику мыши
Доброго времени! Есть задача - слабать программу с элементами графического построения, а именно - в заданной области (Panel\...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru