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

Неверно обводится область по контуру

17.09.2022, 04:24. Показов 973. Ответов 6
Метки 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
static void init(ref int[] a, ref int[] b, PaintEventArgs e, int i3,int R,int G,int B)
        {
 
            using (Matrix m = new Matrix())
            {
                m.Scale(2, 2);
                e.Graphics.Transform = m;
                List<Point> polyPoints = new List<Point>();
                for (int i = 0; i < a.Length; i++)
                {
                    //  int x1 = Convert.ToInt32(textBox1.Text); int x2 = Convert.ToInt32(textBox1.Text);
                    //polyPoints.Add(new Point(Convert.ToInt32(textBox1.Text), Convert.ToInt32(textBox2.Text)));
                    polyPoints.Add(new Point(a[i], b[i]));
                
 
                    // use a semi-transparent background brush:
                    using (SolidBrush br = new SolidBrush(Color.FromArgb(R, G, B)))
                    {
                        e.Graphics.FillPolygon(br, polyPoints.ToArray());
                    }
                //  e.Graphics.DrawPolygon(Pens.DarkBlue, polyPoints.ToArray());
 
 
                        if (i == 0)
                        {
e.Graphics.DrawLine(Pens.Red, polyPoints[0].X, polyPoints[0].Y, polyPoints.Last().X, polyPoints.Last().Y);
 
                        }
                        else
                        {
e.Graphics.DrawLine(Pens.Red, polyPoints[i].X, polyPoints[i].Y, polyPoints[i - 1].X, polyPoints[i - 1].Y);
                        }
 
 
                }
            }
 
        }
    }
Вот здесь вырисовывается область
C#
1
2
3
4
using (SolidBrush br = new SolidBrush(Color.FromArgb(R, G, B)))
{
                        e.Graphics.FillPolygon(br, polyPoints.ToArray());
}
А здесь Контур
C#
1
2
3
4
5
6
7
8
9
10
 if (i == 0)
 {
e.Graphics.DrawLine(Pens.Red, polyPoints[0].X, polyPoints[0].Y, polyPoints.Last().X, polyPoints.Last().Y);
  }
    else
   {
e.Graphics.DrawLine(Pens.Red, polyPoints[i].X, polyPoints[i].Y, polyPoints[i - 1].X, polyPoints[i - 1].Y);
     }
 
    }
Мне нужно чтобы контур выделялся четко по все области,но этого не происходит. Как можно без помощи Полигона залить цветом область внутри DrawLine?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.09.2022, 04:24
Ответы с готовыми решениями:

Неверно преобразовываю ряд, или же неверно записываю его в код
Задание:Для заданного с консоли значения n определить сумму числового ряда: s=\sum...

Посмотреть решение и ответить, неверно нарисовала момент или неверно посчитана работа?
Здравствуйте... Решала задачу по динамике. Нужно найти скорость тела 1 (это ползун). Расстояние, на которое он поднимается - S - пол...

Определить, попадает ли заданная точка в заштрихованную область (границы не входят в область)
Условие: Напишите программу, которая определяет, попадает ли заданная точка в заштрихованную область. Границы не входят в область. Не...

6
0 / 0 / 0
Регистрация: 27.12.2015
Сообщений: 219
17.09.2022, 04:25  [ТС]
Результат
Миниатюры
Неверно обводится область по контуру  
0
2287 / 1603 / 400
Регистрация: 26.06.2017
Сообщений: 4,748
Записей в блоге: 1
17.09.2022, 08:59
aeaeaeae, как минимум сначала лучше заполнить список polyPoints, а потом один раз нарисовать полигон e.Graphics.FillPolygon(br, polyPoints.ToArray());
0
0 / 0 / 0
Регистрация: 27.12.2015
Сообщений: 219
17.09.2022, 14:02  [ТС]
Список полигон заполняется но он кажется не совсем верно отрисовывает точки. А drawline верно. Поэтому я и хочу закрасить области между drawline. Как это можно сделать?
0
2287 / 1603 / 400
Регистрация: 26.06.2017
Сообщений: 4,748
Записей в блоге: 1
17.09.2022, 22:15
Цитата Сообщение от aeaeaeae Посмотреть сообщение
но он кажется не совсем верно отрисовывает точки
Я про это Вам и говорю. Если присмотреться, то при отрисовке полигона пропускаются целые наборы точек, поэтому полигон надо рисовать один раз.
0
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
18.09.2022, 23:07
Лучший ответ Сообщение было отмечено aeaeaeae как решение

Решение

aeaeaeae, вынеси fillpolygol за пределы цикла
1
0 / 0 / 0
Регистрация: 27.12.2015
Сообщений: 219
18.09.2022, 23:56  [ТС]
Спасибо вам большое!Получилось.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.09.2022, 23:56
Помогаю со студенческими работами здесь

Записать логическое выражение, описывающее область определения и область изменения функции y=1/x^2
Нужна ваша помощь, господа-программисты! Спасибо огромное, заранее.

Область памяти для переменной и её значения. Это одна и та же область?
Добрый день! Задумался над таким вопросом. Есть переменная, а есть её значение. При создани переменной (без инициализации), насколько я...

Заполнить заштрихованную область матрицы нулями, а остальную область единицами
Напишите метод static int Zero (out int a, int n), который заполняет заштрихованную область матрицы нулями, а другую область — единицами...

Для бинарного отношения найти область определения, область значений
Для бинарного отношения, определенного на множестве R, найти область определения, область значений и нарисовать декартову диаграмму Сам...

Найти одну из линейных функций, отображающих область Dz на область Dw , если:
Посмотрите, пожалуйста, правильно ли я начертила? не уверена в знаке: если по часовой стрелке то плюс?


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru