powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / C# - нарисованы окружности, надо создать меню к каждой и удалять из меню
6 сообщений из 6, страница 1 из 1
C# - нарисованы окружности, надо создать меню к каждой и удалять из меню
    #39416236
ukugyul552465
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть код:

Код: 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.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Grafa
{
    public class Ellipsoid
    {
        int width_;
        int height_;
        public Ellipsoid (int width, int height) { width_ = width; height_ = height; } // Конструктор
    }

    public partial class Form1 : Form
    {
        int counter = 0;
        Ellipsoid[] mas = new Ellipsoid[10000];
           
        Graphics grafa_1;
        Pen pen_1 = new Pen(Color.Black);
        public Form1()
        {
            InitializeComponent();
            grafa_1 = Graphics.FromHwnd(pictureBox1.Handle);
            for (int i = 0; i < 10000; i++)
            {
                mas[i] = new Ellipsoid(5555, 5555);
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            counter++;
            int pic_width = pictureBox1.Width / 2;
            int pic_height = pictureBox1.Height / 2;
            Random random_1 = new Random();
            int rand_width = random_1.Next(0, pic_width);
            int rand_height = random_1.Next(0, pic_height);
            mas[counter] = new Ellipsoid(rand_width, rand_height);
            grafa_1.DrawEllipse(pen_1, rand_width, rand_height, 100, 100);

        }

        private void toolStripMenuItem2_Click(object sender, EventArgs e)
        {
            pen_1.Width = 1;
        }

        private void toolStripMenuItem3_Click(object sender, EventArgs e)
        {
            pen_1.Width = 5;
        }

        private void toolStripMenuItem4_Click(object sender, EventArgs e)
        {
            pen_1.Width = 10;
        }

        private void сплошнаяToolStripMenuItem_Click(object sender, EventArgs e)
        {
            pen_1.DashPattern = new float[] {1f};
        }

        private void пунктирнаяToolStripMenuItem_Click(object sender, EventArgs e)
        {
            pen_1.DashPattern = new float[] { 2f, 1f };
        }

        
    }
}



Нажатием кнопки рисуем окружности.
А необходимо, чтобы мы нажимали на окружность, она выделялась, появлялось меню и через него мы бы удаляли эту (одну) окружность, не трогая остальные.

Подскажите, в каком направлении двигаться.
...
Рейтинг: 0 / 0
C# - нарисованы окружности, надо создать меню к каждой и удалять из меню
    #39416298
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ukugyul552465Есть код:Подскажите, в каком направлении двигаться.
Для этого их нужно не просто рисовать, нужно, сделать их реальными объектами (это самый простой и функциональный вариант)
то есть есть объект Ellipse который вы добавляете в элемент контейнер типа Canvas, и там задаете его свойства, типа положение, ширины и высоты или другие параметры. Тогда и проблем с его выделением, удалением и изменением не будет.
На сколько мне известно, Еллипс в WinForms уже существует, но даже если и нет, сделать свой труда не составит
...
Рейтинг: 0 / 0
C# - нарисованы окружности, надо создать меню к каждой и удалять из меню
    #39416911
ukugyul552465
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробовал так:

Код: 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.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;


using System.Windows;
using System.Windows.Input;
using System.Threading;


namespace Grafa
{
    

    public partial class Form1 : Form
    {
        int counter = 0;
        Ellipsoid[] mas = new Ellipsoid[10000];
           
        Graphics grafa_1;
        Pen pen_1 = new Pen(Color.Black);
        public Form1()
        {
            InitializeComponent();
            grafa_1 = Graphics.FromHwnd(pictureBox1.Handle);
            for (int i = 0; i < 10000; i++)
            {
                mas[i] = new Ellipsoid(5555, 5555);
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            

            counter++;
            int pic_width = pictureBox1.Width / 2;
            int pic_height = pictureBox1.Height / 2;
            Random random_1 = new Random();
            int rand_width = random_1.Next(0, pic_width);
            int rand_height = random_1.Next(0, pic_height);
            mas[counter] = new Ellipsoid(rand_width, rand_height);
            //grafa_1.DrawEllipse(pen_1, rand_width, rand_height, 100, 100);

            grafa_1.DrawEllipse(pen_1, mas[counter].rect);

            
           

        }

        private void toolStripMenuItem2_Click(object sender, EventArgs e)
        {
            pen_1.Width = 1;
        }

        private void toolStripMenuItem3_Click(object sender, EventArgs e)
        {
            pen_1.Width = 5;
        }

        private void toolStripMenuItem4_Click(object sender, EventArgs e)
        {
            pen_1.Width = 10;
        }

        private void сплошнаяToolStripMenuItem_Click(object sender, EventArgs e)
        {
            pen_1.DashPattern = new float[] {1f};
        }

        private void пунктирнаяToolStripMenuItem_Click(object sender, EventArgs e)
        {
            pen_1.DashPattern = new float[] { 2f, 1f };
        }

        private void цветФигурыToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (colorDialog1.ShowDialog() == DialogResult.OK)
            {
                pen_1.Color = colorDialog1.Color;
            }
        }
    }


    public class Ellipsoid
    {
        

        static int width_;
        static int height_;
        public Ellipsoid(int r_width, int r_height) { width_ = r_width; height_ = r_height; } // Конструктор
        public Rectangle rect = new Rectangle(width_, height_, width_, height_);
    }


}



Однако всё то же.
Не могу понять, как сделать эллипс как элемент формы.
...
Рейтинг: 0 / 0
C# - нарисованы окружности, надо создать меню к каждой и удалять из меню
    #39416927
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ukugyul552465как сделать эллипс как элемент формы.
его не надо делать контролом на форме(элементом), его рисовать нужно.

Ну а для рисования(перерисовки) и хиттеста - требуется коллекция объектов - графических элементов(эллипсов)
и рисовать нужно не по нажатию на кнопку, а в обработчике события OnPaint
...
Рейтинг: 0 / 0
C# - нарисованы окружности, надо создать меню к каждой и удалять из меню
    #39417059
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для этой задачи идеальной подойдет WPF, там уже всё есть Visual объекты, HitTest, прозрачность, Овалы и другие шейпы. Не надо ни чего будет самому рисовать (практически).
...
Рейтинг: 0 / 0
C# - нарисованы окружности, надо создать меню к каждой и удалять из меню
    #39417102
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtesдля этой задачи идеальной подойдет WPF,
мы знаем часть задачи.
она похожа на учебную
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / C# - нарисованы окружности, надо создать меню к каждой и удалять из меню
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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