Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
1 / 1 / 1
Регистрация: 11.11.2012
Сообщений: 8

цикл работает неправильно, не получается закрасить окружность попиксельно C#

03.05.2013, 18:45. Показов 1183. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день! Помогите пожалуйста с решением проблемы, не пойму, что я делаю не правильно...Вобщем я нарисовала попиксельно окружность и теперь мне нужно ее закрасить...вот кусок кода, где я пытаюсь это сделать:

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
//zalivka    (xt и yt - координаты середины окружности, r - радиус)
                  int xt = 320, yt = 240, N = yt + 2*r, i2, j2, jmin = yt - r, jmax = yt + r, imax = xt + r, imin = xt - r;
                  Color pixel;
                  Color newColor = Color.FromArgb(0, 127, 255);
           
                  int[] X_min = new int[N];
                  int[] X_max = new int[N];
               /*Сначало задаю границы области (в массивы X_min и X_max заносятся координаты X начала отрезка и его конца соответственно а координаты Y задаю в ручную, т.к знаю чему равна окружность по вертикали + смещение по Y)*/
                  for (j2 = jmin+1; j2 < jmax; j2++)
                  {
                      imax = 0; imin = 0;
                      imax = xt + r + 5;
                      imin = xt - r - 5;
                      pixel = image1.GetPixel(imin, j2);
                      while (pixel != granica && imin < pictureBox1.Width) 
      /*если цвет пикселя равен цвету границы окружности, то выходим из цикла*/
                      {
                          
                              imin++;
                              pixel = image1.GetPixel(imin, j2);
                           
                      }
                      X_min[j2] = imin + 1; //заносим координату X в массив, для координат X начала отрезка 
 
                      pixel = image1.GetPixel(imax, j2);
                      while (pixel != granica && imax < pictureBox1.Width)
                      {
                              imax--;
                              pixel = image1.GetPixel(imax, j2);                        
                      }
                      X_max[j2] = imax - 1; //заносим координату X в массив, для координат X конца отрезка 
                  }
 
//закрашиваем внутри созданной границы
                  for (j2 = jmin+1; j2 <= jmax; j2++)
                  {
                      for (i2 = X_min[j2]; i2 <= X_max[j2]; i2++)
                      {
                          image1.SetPixel(i2, j2, newColor);
                      }
                  }
                  pictureBox1.Invalidate();

проблема в том, что когда пиксель становится равным цвету границы - цикл продолжается, хотя должен заканчиваться... что я делаю не так??
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.05.2013, 18:45
Ответы с готовыми решениями:

Попиксельно закрасить окружность
Помогите , нужно попиксельно закрасить окружность через кнопку button4_Click using System; using System.Collections.Generic; ...

Неправильно работает цикл for, и функции работают неправильно
1) Неправильно работает цикл for(k=0...). Входит только 1 раз, дальше вылетает. Делал пошаговую отладку на проверку значения k. Выдаёт...

Цикл работает неправильно, в то время как POST работает
Всем привет! Я хотел написать под php скрипт с авторизацией, брут, на своем сайте(подбор пароля). Написал код на загрузку словаря +...

2
СуперМодулятор
 Аватар для Bringoff
134 / 134 / 48
Регистрация: 03.11.2012
Сообщений: 974
03.05.2013, 18:55
Все Вы делаете не так... В С# есть метод рисования окружности:
C#
1
2
3
 Graphics g = e . Graphics ;
Pen pen = new Pen ( Color . Blue );
g . DrawEllipse( pen, 50, 50, 100, 100);
0
1 / 1 / 1
Регистрация: 11.11.2012
Сообщений: 8
03.05.2013, 19:02  [ТС]
Цитата Сообщение от Izobara Посмотреть сообщение
Все Вы делаете не так... В С# есть метод рисования окружности:
C#
1
2
3
 Graphics g = e . Graphics ;
Pen pen = new Pen ( Color . Blue );
g . DrawEllipse( pen, 50, 50, 100, 100);
Спасибо большое за познания C#, но вы явно не понимаете проблему, а проблема в том, что я студентка, и по компьютерной графике у меня есть конкретное задание нарисовать окружность методом Брезенхема и заполнить ее попиксельно, а не готовыми функциями Graphics
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.05.2013, 19:02
Помогаю со студенческими работами здесь

Неправильно работает цикл for
Здравствуйте. Вот код: for($i = 4.05; $i &lt;= 11.25; $i = $i + 0.8 ){ echo $i; } Подскажите, почему не выводится число...

Неправильно работает цикл
почему выводит последнее значение в таблице(т.е. из последней строки) и 7 раз а в таблице 5 строк function getProduct () { ...

Цикл неправильно работает
Подскажите пожалуста что нетак в коде. Когда работает этот скрипт в меню выводит одну и туже категорию и с одной и той же ссылкой. ...

Цикл работает неправильно
Цикл отрабатывает только 1 раз. Не выполняется условный оператор. FASM org 100h jmp start buff db 80,0, 80 dup(0),'$' value1...

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Сумматор с применением элементов трёх состояний.
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. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru