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

Заливка треугольника без использования FillPolygon

03.10.2014, 18:02. Показов 2060. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток. Есть задача на заливку треугольника. Использовать FillPolygon нельзя, к сожалению. В моем алгоритме ошибка. Что делаю не так?
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
private void FillTriangle(Point[] P)
        {
            Graphics g = Graphics.FromHwnd(this.Handle);
            int iMax = 0;
            int iMin = 0;
            int iMid = 0;
            for (int j = 0; j < N; j++)
            {
                if (P[j].Y < P[iMin].Y)
                {
                    iMin = j;
                }
                else if (P[j].Y > P[iMax].Y)
                {
                    iMax = j;
                }
                iMid = Math.Abs(3 - iMin - iMax);
 
                int dx01 = P[iMax].Y != P[iMin].Y ? ((P[iMax].X - P[iMin].X) / (P[iMax].Y - P[iMin].Y)) : 0;
                int dx02 = P[iMin].Y != P[iMid].Y ? ((P[iMin].X - P[iMid].X) / (P[iMin].Y - P[iMid].Y)) : 0;
                int dx12 = P[iMid].Y != P[iMax].Y ? ((P[iMid].X - P[iMax].X) / (P[iMid].Y - P[iMax].Y)) : 0;
 
                int x1 = P[iMin].X;
                int x2 = x1;
 
                for (int jj = P[iMin].Y; jj <= P[iMid].Y; jj++)
                {
                    g.DrawLine(bluePen, x1, jj, x2, jj);
                    x1 += dx01;
                    x2 += dx01;
                }
                for (int jj = P[iMid].Y; jj <= P[iMax].Y - 1; jj++)
                {
                    x1 += dx01;
                    x2 += dx01;
                    g.DrawLine(bluePen, x1, jj, x2, jj);
                }
            }
        }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.10.2014, 18:02
Ответы с готовыми решениями:

Заливка через FillPolygon
Доброго времени суток. Помогите, нужно выполнить заливку заданного многоугольника любым цветом. Вроде бы написал, никаких ошибок нет, но не...

Заливка треугольника в движении
Есть треугольник, который перемещается циклично по иси х, нужно обеспечить КОРРЕКТНУЮ заливку во время движения. Есть одна проблема если...

Заливка на ATmega328P через RX/TX без "переходников"
Где бы почитать, каким образом прошивается через RX/TX ATmego328P? Информации по SPI много, а по UARTу не нашел :( Я понимаю, что...

2
79 / 79 / 37
Регистрация: 11.09.2014
Сообщений: 579
03.10.2014, 18:18
в какой строке ошибка?
0
14 / 14 / 6
Регистрация: 07.09.2013
Сообщений: 159
03.10.2014, 18:25  [ТС]
Baky,
C#
1
2
3
int dx01 = P[iMax].Y != P[iMin].Y ? ((P[iMax].X - P[iMin].X) / (P[iMax].Y - P[iMin].Y)) : 0;
int dx02 = P[iMin].Y != P[iMid].Y ? ((P[iMin].X - P[iMid].X) / (P[iMin].Y - P[iMid].Y)) : 0;
int dx12 = P[iMid].Y != P[iMax].Y ? ((P[iMid].X - P[iMax].X) / (P[iMid].Y - P[iMax].Y)) : 0;
Суть в том, что идет выход за пределы массива. Почему? Никак не могу понять.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.10.2014, 18:25
Помогаю со студенческими работами здесь

Как найти список принтеров/МФУ без картриджей ( заливка чернил ) ?
Здравствуйте. Давно уже горю желанием купить принтер без картриджа. Для меня, как для обывателя, принтер без картриджа = СНПЧ, но яндекс...

Прозрачная кисть FillPolygon
Здраствуйте! Не могу сделать чтоб мой FillPolygon был закрашен кистью с прозрачностью в 25%. Как это сделать. private void...

Функция FillPolygon не работает с List
Всем привет! Никак не могу понять в чем проблема. На компоненте PictureBox рисую полигон. Graphics g = CanvasPB.CreateGraphics(); ...

Заливка картинки, а потом заливка заливки и прочее
В общем требуется вот что: Единственное, что у меня получилось сделать - черную заливку поверх изображения. Но проблема еще в том, что...

Сайт без использования html
Доброго времени суток, назрел вопрос, можно ли создать сайт(любой), без использования html вообще, либо не прикасаясь к нему вообще в...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru