1 / 1 / 1
Регистрация: 11.11.2012
Сообщений: 8
1

Не получается закрасить окружность попиксельно С#, не выходит из цикла при условии

03.05.2013, 18:35. Показов 719. Ответов 0
Метки нет (Все метки)

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

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
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.05.2013, 18:35
Ответы с готовыми решениями:

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

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

Не выходит из цикла с strcmp в условии
Доброе время суток! Есть два массива char. Одно случайно заполняется цифрами, другие вводит...

Бесконечный цикл с выходом при условии ,не выходит даже после return
private void start() { testboi(); } private void...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.05.2013, 18:35

Помощь в написании контрольных, курсовых и дипломных работ здесь.

При любом условии вылетает из цикла
while(str.empty()==false){ cout&lt;&lt;&quot;выберите операцию&quot;&lt;&lt;endl&lt;&lt;&quot;1.Добавить элемент&quot;&lt;&lt;endl; ...

При условии цикла WHILE m > 0 программа не работает
Имеем такую программу: uses Crt; var m, S: integer; begin ClrScr; while m &gt;= 0 do begin ...

Повтор цикла при определенном условии
Как такое сделать? IF True Then Все_сначала

Как выйти из цикла while при определенном условии
Как выйти из цикла while при определенном условии (используя if) do while 'что-то if...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.