Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 27.02.2023
Сообщений: 11

Написать программу построения геометрических объектов

31.05.2024, 11:37. Показов 713. Ответов 3
Метки с# (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите написать программу построения геометрических объектов, нахождение площади с учетом шаблонов ООП.
Выбирается одна из предложенных пользователю фигур (треугольник, прямоугольник, ромб, круг).
Вводятся параметры фигуры, по параметрам фигуры строится сама фигура. Координаты фигур выбираются в пределах экрана 600x600. По необходимости вычисляется площадь по параметрам фигуры. Фигуры добавляются в список, список может быть сохранен и загружен в файл.
Заранее благодарен ответившим.

Добавлено через 1 минуту
Пока так пробовал, на многоугольниках, с выбором пользователем фигуры, но тоже не очень получается

Form1
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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
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.Media;
 
namespace WinFormsApp
{
    public partial class Form1 : Form
    {
        List<Figure> figures;
        List<bool> panelChecked = new List<bool>();
        Graphics g;
        public Form1()
        {
            InitializeComponent();
            figures = new List<Figure>()
            {
                new Figure(3),
                new Figure(6),
                new Figure(4),
                new Figure(5)
 
            };
        }
 
        private void PanelTriangle_Paint(object sender, PaintEventArgs e)
        {
            g = PanelTriangle.CreateGraphics();
            figures[0].Draw(g);
        }
 
        private void PanelRectangle_Paint(object sender, PaintEventArgs e)
        {
            g = PanelRectangle.CreateGraphics();
            figures[1].Draw(g);
        }
 
        private void PanelRhombus_Paint(object sender, PaintEventArgs e)
        {
            g = PanelRhombus.CreateGraphics();
            figures[2].Draw(g);
        }
 
        private void PanelCircle_Paint(object sender, PaintEventArgs e)
        {
            g = PanelCircle.CreateGraphics();
            figures[3].Draw(g);
        }
 
 
        private void panelTriangle_Click(object sender, EventArgs e)
        {
            panelChecked[0] = true;
            panelChecked[1] = false;
            panelChecked[2] = false;
            panelChecked[3] = false;
        }
 
        private void panelRectangle_Click(object sender, EventArgs e)
        {
            panelChecked[0] = false;
            panelChecked[1] = true;
            panelChecked[2] = false;
            panelChecked[3] = false;
        }
 
        private void panelRhombus_Click(object sender, EventArgs e)
        {
            panelChecked[0] = false;
            panelChecked[1] = false;
            panelChecked[2] = true;
            panelChecked[3] = false;
        }
 
        private void panelCircle_Click(object sender, EventArgs e)
        {
            panelChecked[0] = false;
            panelChecked[1] = false;
            panelChecked[2] = false;
            panelChecked[3] = true;
        }
 
        private void PanelView_MouseClick(object sender, MouseEventArgs e)
        {
            switch (e.Button)
            {
                case MouseButtons.Left:
                    g = PanelView.CreateGraphics();
                    if (panelChecked[0])
                    {
                        figures[0].Draw(g);
                    }
                    if (panelChecked[1])
                    {
                        figures[1].Draw(g);
                    }
                    if (panelChecked[2])
                    {
                        figures[2].Draw(g);
                    }
                    if (panelChecked[3])
                    {
                        figures[3].Draw(g);
                    }
                    break;
                case MouseButtons.Right:
                    panelChecked[0] = false;
                    panelChecked[1] = false;
                    panelChecked[2] = false;
                    panelChecked[3] = false;
                    break;
            }
        }
 
 
        private void btnFigureArea_Click(object sender, EventArgs e)
        {
 
        }
 
        private void btnListSave_Click(object sender, EventArgs e)
        {
            using (System.IO.StreamWriter sw = new System.IO.StreamWriter("D:\\1.txt"))
            {
                for (int i = 0; i < listBoxFigure.Items.Count; i++)
                    sw.WriteLine(listBoxFigure.Items[i].ToString());
            }
        }
 
        private void btnListLoad_Click(object sender, EventArgs e)
        {
            listBoxFigure.Items.Clear();
            using (System.IO.StreamReader sr = new System.IO.StreamReader("d:\\1.txt"))
            {
                while (!sr.EndOfStream)
                {
                    listBoxFigure.Items.Add(sr.ReadLine());
                }
            }
        }
    }
}

Figure.cs
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace WinFormsApp2
{
    internal class Figure : IFigure
    {
        public Point Center { get; set; }
        public int Radius { get; set; } = 25;
        public int CountCorners { get; set; }
        public Figure()
        {
 
        }
        public Figure(int countCorners)
        {
            CountCorners = countCorners;
        }
 
        public static IEnumerable<PointF> CornersCoordinates(PointF center, int radius, int corners)
        {
            var angle = Math.PI * 2 / corners;
            // точки многоугольника
            var points = Enumerable.Range(0, corners)
                .Select(i => PointF.Add(center,new SizeF((float)Math.Sin(i * angle) * radius,(float)Math.Cos(i * angle) * radius)));
            return points;
        }
 
        public void ChangeSize()
        {
            
        }
 
        public void Draw(Graphics graphics)
        {
            graphics.FillPolygon(Brushes.DarkGreen, CornersCoordinates(Center = new Point(25,25), Radius, CountCorners).ToArray());
        }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
31.05.2024, 11:37
Ответы с готовыми решениями:

Модифицируйте программу построения геометрических фигур
Модифицируйте программу построения геометрических фигур следующим образом: добавьте главное меню, в котором пункт «Настройки» содержит...

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

Составить программу построения геометрических фигур с использованием оператора case для просмотра результата
Задали такую задачу. Составить программу построения геометрических фигур с использованием оператора case для просмотра результата. ...

3
2287 / 1603 / 400
Регистрация: 26.06.2017
Сообщений: 4,753
Записей в блоге: 1
31.05.2024, 11:46
luks77, посмотрите тут как надо делать фигуры.
0
0 / 0 / 0
Регистрация: 27.02.2023
Сообщений: 11
31.05.2024, 14:45  [ТС]
там Visual Basic
0
2287 / 1603 / 400
Регистрация: 26.06.2017
Сообщений: 4,753
Записей в блоге: 1
31.05.2024, 16:07
VB.Net и C# очень близки, а код в приведённой ссылке ничтожно мал и предельно понятен. Поэтому либо воспользуйтесь конвертером, либо чуть углубившись в VB возьмите главное из того проекта и перепишите на C# "под себя".
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
31.05.2024, 16:07
Помогаю со студенческими работами здесь

Разработать программу для демонстрации мультипликационного режима перемещения геометрических объектов
Помогите пожалуйста решить задачу!) Буду очень благодарен! Разработать программу для демонстрации мультипликационного режима...

Разработать программу для демонстрации мультипликационного режима перемещения геометрических объектов
Доброго времени суток! Нависла вот такая проблема Разработать программу для демонстрации мультипликационного режима перемещения...

Написать программу для рисования геометрических фигур
Написать программу для рисования геометрических фигур

Написать программу движения 3-х разных геометрических фигур по экрану
Написать программу движения 3-х разных геометрических фигур по экрану (горизонтально или вертикально). Фигуры не сталкиваются. Они должны...

Написать программу создания модуль Unit для простейших геометрических фигур
Написать программу создания модуль Unit для простейших геометрических фигур.


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru