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

Фигуры и форма

09.09.2022, 23:25. Показов 847. Ответов 2
Метки c# (Все метки)

Студворк — интернет-сервис помощи студентам
Работал над кодом с формой и вроде умудрился его написать правильно , но после ввода и процесса расчета прямоугольника происходит мне незнакомая ошибка , подскажите что не так
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
149
150
151
152
153
154
155
156
using System.Drawing;
using System.Text;
using System.Collections.Generic;
using System;
using System.Linq;
namespace WinFormsApp2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void Clear() //очищаем текстовые поля
        {
            textBox1.Text = "";
            textBox2.Text = "";
            textBox3.Text = "";
            textBox4.Text = "";
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            float x;
            float y;
            float width;
            float heigth;
            //проверка на корректность введенных параметров
            if (!float.TryParse(textBox1.Text, out x) || x < 0)
            {
                MessageBox.Show("Проверьте данные!", "Ошибка ввода");
                Clear();
                return;
            }
            if (!float.TryParse(textBox2.Text, out y) || y < 0)
            {
                MessageBox.Show("Проверьте данные!", "Ошибка ввода");
                return;
            }
            if (!float.TryParse(textBox3.Text, out width) || width < 0)
            {
                MessageBox.Show("Проверьте данные!", "Ошибка ввода");
                return;
            }
            if (!float.TryParse(textBox4.Text, out heigth) || heigth < 0)
            {
                MessageBox.Show("Проверьте данные!", "Ошибка ввода");
                return;
            }
            Rectangle rect = new Rectangle(x, y, width, heigth);
            rect.Draw(pictureBox1, Color.Green);
            Clear();
 
            
        }
 
        private void textBox3_TextChanged(object sender, EventArgs e)
        {
 
        }
 
        private void textBox4_TextChanged(object sender, EventArgs e)
        {
 
        }
 
        private void textBox1_TextChanged(object sender, EventArgs e)
        {
 
        }
 
        private void pictureBox1_Click(object sender, EventArgs e)
        {
 
        }
        private void pictureBox1_MouseMove(object sender, EventArgs e)
        {
            
        }
    }
    public class Rectangle
    {
        private float _x; //координата х
        private float _y; //координата у
        private float _width; //ширина фигуры
        private float _heigth;//высота фигуры
 
        public float X
        {
            get { return _x; }
            set
            {
                if (value >=0)
                    _x = value;
                else
                    _x = 0;
            }
        }
        public float Y
        {
            get { return _y; }
            set
            {
                if (value >= 0)
                    _y = value;
                else
                    _y=0;
 
            }
        }
        public float width
        {
            get { return _width; }
            set
            {
                if (value >= 0)
                    _width = value;
                else
                    _width = 0;
 
            }
        }
        public float height
        {
            get { return _heigth; }
            set
            {
                if (value >= 0)
                    _heigth = value;
                else
                    _heigth = 0;
 
            }
        }
        public Rectangle(float x, float y, float width,float heigth) //конструктор
 
        {
            Rectangle rect = new Rectangle(x, y, width, heigth);
            _x = x;
            _y = y;
            _width = width;
            _heigth = heigth;
        }
 
        public void Draw(PictureBox pictBox, Color colr)
        {
            
            Pen pen = new Pen(colr, 2);
            Graphics g = Graphics.FromHwnd(pictBox.Handle);
            g.DrawRectangle(pen, _x, _y, _width, _heigth);
        }
 
 
 
    }
}
Извините за положениие некоторых частей в коде в неправильном порядке
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.09.2022, 23:25
Ответы с готовыми решениями:

Форма в виде произвольной фигуры, текста
Всем здравствуйте. Так получается форма в виде круга: void __fastcall TForm1::FormCreate(TObject *Sender) { HRGN Region; ...

Форма и фигуры в делфи
Создаю программу, где вводишь координаты в Edit-ах и нажимая на соответствующую кнопку(например &quot;Четырехугольник&quot;) рисуется...

Форма в виде произвольной фигуры
По поводу создание формы в виде произвольной фигуры Ошибок не выдает, а форму не изменяет-что не так? помогите пожалуйста unit...

2
548 / 355 / 120
Регистрация: 17.08.2014
Сообщений: 1,351
10.09.2022, 12:08
SquizySS, А где код дизайнера? Так же для Pen и для Graphics нужно использовать using либо диспозить объекты после использования, иначе у вас будет утекать память.
0
2285 / 1601 / 400
Регистрация: 26.06.2017
Сообщений: 4,744
Записей в блоге: 1
11.09.2022, 11:23
Andreyip, у Вас прям идея фикс эта утечка памяти. GC приберёт всё, но не сразу.

Добавлено через 4 минуты
SquizySS, а чем Вас не устроила встроенная структура Rectangle?

Добавлено через 54 секунды
И зачем нужна строка 138?

Добавлено через 1 минуту
Вот это вынесите в отдельный метод
C#
1
2
3
4
5
6
7
           //проверка на корректность введенных параметров
            if (!float.TryParse(textBox1.Text, out x) || x < 0)
            {
                MessageBox.Show("Проверьте данные!", "Ошибка ввода");
                Clear();
                return;
            }
Но лучше всего организовать нормальную валидацию в самих текстбоксах и не городить огород.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.09.2022, 11:23
Помогаю со студенческими работами здесь

Вместо отрисовки фигуры форма зачеркивается линиями
Есть простой код на С++ CLI, несколько классов обверток методов класса Graphics для рисования простых фигур: public class Line // класс...

Что такое фигуры Лиссажу? От чего зависит их форма?
9. Что такое фигуры Лиссажу? От чего зависит их форма? Как по виду траектории определить соотношение частот складываемых колебаний?

Найти площадь фигуры, форма которой задается неравенствами
Найти площадь фигуры, форма которой задается неравенствами y&gt;=x^2-5,y&lt;=-1 и x&lt;=0. Результат округлить до сотых

Форма четырехугольника: Образовывать фигуры: ромб, квадрат или трапецию
Помогите решить задачи: 1 Один очень умный математик переехал жить в новый дом. Это было очень красивое здание. Однако ученого стал...

Написать 3 функции - смещения фигуры на указанный вектор, удвоения размера фигуры, перекрашивания фигуры
Написать 3 функции - смещения фигуры на указанный вектор, удвоения размера фигуры, перекрашивания фигуры


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru