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

В форме почему-то не рисуется треугольник

30.05.2023, 16:48. Показов 604. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребят помогите!
В форме почему то не рисуется треугольник помогите пожалуйста. Заранее спасибо!!!
Класс формы
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
public partial class Form1 : Form
    {
        Triangle triangle;//Перемещаемый треугольник
        Timer tmr = new Timer() { Interval = 150 };//Таймер анимации
        const float STEP = 5F;//Шаг перемещения
        int direction = 1;//Направление перемещения
 
        public Form1()
        {
            InitializeComponent();
            SetLimits();
            tmr.Tick += tmr_Tick;
        }
 
        void tmr_Tick(object sender, EventArgs e)
        {
            if (triangle == null) return;
            RectangleF rect = triangle.GetBounds();
            if (rect.Bottom >= pictureBox1.Height)
                direction = -1;
            else if (rect.Top <= pictureBox1.Top)
                direction = 1;
            triangle.Move(0, direction * STEP);
            pictureBox1.Invalidate();
        }
 
        private void SetLimits()
        {
            X1.Maximum = pictureBox1.Width;
            Y1.Maximum = pictureBox1.Height;
            X2.Maximum = pictureBox1.Width;
            Y2.Maximum = pictureBox1.Height;
            X3.Maximum = pictureBox1.Width;
            Y3.Maximum = pictureBox1.Height;
        }
 
        private void buildButton_Click(object sender, EventArgs e)
        {
            triangle = new Triangle(
                (float)X1.Value, (float)Y1.Value,
                (float)X2.Value, (float)Y2.Value,
                (float)X3.Value, (float)Y3.Value);
            pictureBox1.Invalidate();
        }
 
        private void pictureBox1_Paint(object sender, PaintEventArgs e)
        {
            if (triangle == null) return;
 
            using (Pen pen1 = new Pen(Color.Blue), pen2 = new Pen(Color.Red), pen3 = new Pen(Color.Green))
            {
                e.Graphics.DrawLine(pen1, triangle.Pt1, triangle.Pt2);
                e.Graphics.DrawLine(pen2, triangle.Pt2, triangle.Pt3);
                e.Graphics.DrawLine(pen3, triangle.Pt3, triangle.Pt1);
            }
 
        }
 
        private void startButton_Click(object sender, EventArgs e)
        {
            if (tmr.Enabled)
                tmr.Stop();
            else tmr.Start();
        }
    }
Класс треугольника
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
class Triangle
    {
        public PointF Pt1;
        public PointF Pt2;
        public PointF Pt3;
 
        public Triangle(PointF pt1, PointF pt2, PointF pt3)
        {
            this.Pt1 = pt1;
            this.Pt2 = pt2;
            this.Pt3 = pt3;
        }
 
        public Triangle(float x1, float y1, float x2, float y2, float x3, float y3)
        {
            this.Pt1 = new PointF(x1, y1);
            this.Pt2 = new PointF(x2, y2);
            this.Pt3 = new PointF(x3, y3);
 
        }
 
        public void Move(float dx, float dy)
        {
            Pt1 = new PointF(Pt1.X + dx, Pt1.Y + dy);
            Pt2 = new PointF(Pt2.X + dx, Pt2.Y + dy);
            Pt3 = new PointF(Pt3.X + dx, Pt3.Y + dy);
        }
 
        public RectangleF GetBounds()
        {
            RectangleF rect = RectangleF.Empty;
            float minX, minY, maxX, maxY;
            minX = Math.Min(Math.Min(Pt1.X, Pt2.X), Pt3.X);
            minY = Math.Min(Math.Min(Pt1.Y, Pt2.Y), Pt3.Y);
            maxX = Math.Max(Math.Max(Pt1.X, Pt2.X), Pt3.X);
            maxY = Math.Max(Math.Max(Pt1.Y, Pt2.Y), Pt3.Y);
            rect.Location = new PointF(minX, minY);
            rect.Size = new SizeF(maxX - minX, maxY - minY);
            return rect;
        }
    }
Миниатюры
В форме почему-то не рисуется треугольник  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.05.2023, 16:48
Ответы с готовыми решениями:

Почему не рисуется треугольник?
Не могу понять, почему в программе не рисуется треугольник? ОС Ubuntu #include&lt;X11/Xlib.h&gt; #include&lt;X11/Xutil.h&gt; ...

Direct3D 11: Почему неправильно рисуется треугольник?
обьясните почемку треугольк рисуется неправильно void CreateDirect3dDevice() { DXGI_SWAP_CHAIN_DESC sd; ...

Почему треугольник рисуется и исчезает? SFML
Всех с 1м декабря ;) Создаю вот такой абстрактный класс #pragma once class Figure { public: Figure(void); ...

9
2282 / 1598 / 400
Регистрация: 26.06.2017
Сообщений: 4,737
Записей в блоге: 1
30.05.2023, 20:57
в строку 48 формы добавь
C#
1
base.OnPaint(e);
0
1167 / 885 / 517
Регистрация: 09.04.2014
Сообщений: 2,099
31.05.2023, 10:54
Цитата Сообщение от Uswer Посмотреть сообщение
в строку 48 формы добавь
А зачем в обработчике pictureBox1_Paint вызывать OnPaint формы?
0
2282 / 1598 / 400
Регистрация: 26.06.2017
Сообщений: 4,737
Записей в блоге: 1
31.05.2023, 13:16
nedel, pictureBox наследуется от формы?
0
1167 / 885 / 517
Регистрация: 09.04.2014
Сообщений: 2,099
31.05.2023, 17:11
Цитата Сообщение от Uswer Посмотреть сообщение
pictureBox наследуется от формы?
нет - он в нее помещён

Добавлено через 34 минуты
Цитата Сообщение от Lord03 Посмотреть сообщение
В форме почему то не рисуется треугольник помогите пожалуйста.
скиньте весь проект в виде архива - проще будет найти проблему (на первый взгляд, все должно работать).
Возможно один из оработчиков событий не приписан?
0
0 / 0 / 0
Регистрация: 19.03.2023
Сообщений: 21
31.05.2023, 20:11  [ТС]
Вот
Вложения
Тип файла: zip Kursovaya.zip (46.7 Кб, 3 просмотров)
0
1167 / 885 / 517
Регистрация: 09.04.2014
Сообщений: 2,099
01.06.2023, 00:37
Lord03,
Цитата Сообщение от nedel Посмотреть сообщение
Возможно один из оработчиков событий не приписан?

как и подозревал buildButton_Click и pictureBox1_Paint не приписаны к соответствующим событиям
0
1167 / 885 / 517
Регистрация: 09.04.2014
Сообщений: 2,099
01.06.2023, 00:40
и верните pictureBox1_Paint к своему изначальному виду
C#
1
2
3
4
5
6
7
8
9
10
11
12
 private void pictureBox1_Paint(object sender, PaintEventArgs e)
        {
            if (triangle == null) return;
 
            using (Pen pen1 = new Pen(Color.Blue), pen2 = new Pen(Color.Red), pen3 = new Pen(Color.Green))
            {
                e.Graphics.DrawLine(pen1, triangle.Pt1, triangle.Pt2);
                e.Graphics.DrawLine(pen2, triangle.Pt2, triangle.Pt3);
                e.Graphics.DrawLine(pen3, triangle.Pt3, triangle.Pt1);
            }
 
        }
0
2282 / 1598 / 400
Регистрация: 26.06.2017
Сообщений: 4,737
Записей в блоге: 1
01.06.2023, 09:40
Цитата Сообщение от Uswer Посмотреть сообщение
pictureBox наследуется от формы?
Цитата Сообщение от nedel Посмотреть сообщение
нет - он в нее помещён
Именно по этому и надо вызвать base.OnPaint(e) чтобы другие контролы обновились при необходимости.
0
1167 / 885 / 517
Регистрация: 09.04.2014
Сообщений: 2,099
01.06.2023, 11:26
Цитата Сообщение от Uswer Посмотреть сообщение
Именно по этому и надо вызвать base.OnPaint(e) чтобы другие контролы обновились при необходимости.
это если бы ТС переопределил OnPaint своей формы, на пример
C#
1
2
3
4
5
protected override void OnPaint(PaintEventArgs e)
{
    base.OnPaint(e);
    ....
}
а в обработчике события pictureBox1_Paint это не нужно и даже вредно, так как приведет к взаимным вызовам этих 2 методов, что выльется в StackOverflowExcepton
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.06.2023, 11:26
Помогаю со студенческими работами здесь

Почему у меня не рисуется треугольник, а появляется пустое окно
#include&lt;iostream&gt; #include&lt;GL/glut.h&gt; using namespace std; void disp(void){ glClear(GL_COLOR_BUFFER_BIT); ...

Почему не рисуется линия на форме?
Сделал форму: Public Class Form1_Чертеж Dim sТекст As String Dim X1, Y1, X2, Y2 As Integer Dim dPen As Pen ...

Не рисуется треугольник :(
Не рисуется треугольник:( делаю вот по этому уроку: http://code.google.com/p/gl33lessons/wiki/Lesson02 #include &lt;windows.h&gt; ...

Не рисуется треугольник
Прохожу Урок 4 с сайта opengl-tutorial.org В конце задание: Куб рисуется, треугольник - нет. Выключил отрисовку куба,...

Неправильно рисуется треугольник
я следовал урокам http://www.youtube.com/playlist?list=PLRwVmtr-pp06qT6ckboaOhnm9FxmzHpbY и в 102 строчке кода я задаю зелёному углу...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru