Форум программистов, компьютерный форум CyberForum.ru

Закрасить окружность - C++

Восстановить пароль Регистрация
 
b0nny
3 / 1 / 0
Регистрация: 11.11.2013
Сообщений: 338
20.04.2014, 14:18     Закрасить окружность #1
Помогите закрасить таким образом...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<conio.h>
#include<graphics.h>
 
using namespace std;
 
main()
{
    initwindow (300, 300);
    int c,x=150,y=150,R=10,n,i=300;
    setbkcolor(0xFFFFFF);
    cleardevice();
    printf("n="); scanf("%d",&n);
    int d=R+(R/4);
    for (c=0; c<n; c++)
        {
        circle (x,y,R+c*d);
    }
    getch();
    closegraph();
}
Миниатюры
Закрасить окружность  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.04.2014, 14:18     Закрасить окружность
Посмотрите здесь:

C++ закрасить участок шахматной доски
C++ закрасить круг
C++ Закрасить текст
C++ Как закрасить Rectangle
C++ Как закрасить треугольник?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,154
Завершенные тесты: 1
20.04.2014, 15:09     Закрасить окружность #2
Надо начинать рисовать с самого большого круга,
тогда меньшие будут закрывать фон, нарисованный большим.
Примерно так:
C++
1
2
3
4
5
6
7
8
9
10
color=0xFFFFFF;
R=150;dR=150/n;
dColor=color/n;
for (c=0; c<n; c++)
{
   setbkcolor(color);
   circle (x,y,R);
   R-=dR;
   color-=dColor;
}
b0nny
3 / 1 / 0
Регистрация: 11.11.2013
Сообщений: 338
20.04.2014, 15:19  [ТС]     Закрасить окружность #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include<conio.h>
#include<graphics.h>
 
using namespace std;
 
main()
{
    initwindow (300, 300);
    int c,x=150,y=150,n,i,color,R,dR,dColor;
    printf("n="); scanf("%d",&n);
        color=0xFFFFFF;
        R=150;dR=150/n;
        dColor=color/n;
        for (c=0; c<n; c++)
        {
        setbkcolor(color);
        circle (x,y,R);
        R-=dR;
        color-=dColor;
        }
    getch();
    closegraph();
}
Так?
Пока тоже рисует круги, но ничего не закрашивает...
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,154
Завершенные тесты: 1
20.04.2014, 15:25     Закрасить окружность #4
Я не знаю, как менять цвет закраски в graphics.h.
Похоже, предположение, что это setbkcolor(color);
оказалось неверным.
Найдите в помощи по graphics.h как это делать.
b0nny
3 / 1 / 0
Регистрация: 11.11.2013
Сообщений: 338
20.04.2014, 15:27  [ТС]     Закрасить окружность #5
У меня есть такая теория, но реализовать у меня не получилось..
Миниатюры
Закрасить окружность  
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,154
Завершенные тесты: 1
20.04.2014, 15:33     Закрасить окружность #6
Кажется нашел
C++
1
setfillstyle( SOLID_FILL,color);
b0nny
3 / 1 / 0
Регистрация: 11.11.2013
Сообщений: 338
20.04.2014, 17:53  [ТС]     Закрасить окружность #7
zss,
hc=255/n; // чтобы делилось на значение колец.
И мне нужно 3 цикла... Чтобы значение r и g с 255 падало до 0, b поднялось с 0 до 255.
Ведь 255,255,0 - желтый, а 0,0,255 - синий.
А в цикле с отображением колец - setfillstyle(SOLID_FILL, COLOR(r, g, b));
Как-то так?
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,154
Завершенные тесты: 1
20.04.2014, 18:17     Закрасить окружность #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
R=150;dR=150/n;
    dColor=255/n;
    red=green=255;
    blue=0;
    for (c=0; c<n; c++)
    {
        setfillstyle(SOLID_FILL, COLOR(red, green, blue));
        circle (x,y,R);
        R-=dR;
        red-=dColor;
        green-=dColor;
        blue+=dColor;
    }
b0nny
3 / 1 / 0
Регистрация: 11.11.2013
Сообщений: 338
20.04.2014, 21:00  [ТС]     Закрасить окружность #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
#include<conio.h>
#include<graphics.h>
 
using namespace std;
 
main()
{
    initwindow (300, 300);
    int c,x=150,y=150,n,i,color,R,dR,dColor,red,green,blue;
    printf("n="); scanf("%d",&n);
        R=150;
        dR=150/n;
        dColor=255/n;
        red=green=255;
        blue=0;
        for (c=0; c<n; c++)
    {
      setfillstyle(SOLID_FILL, COLOR(red, green, blue));
      circle (x,y,R);
      R-=dR;
      red-=dColor;
      green-=dColor;
      blue+=dColor;
    }
    getch();
    closegraph();
}
Ничего не красит...
Миниатюры
Закрасить окружность  
b0nny
3 / 1 / 0
Регистрация: 11.11.2013
Сообщений: 338
20.04.2014, 21:21  [ТС]     Закрасить окружность #10
В примере у меня в источнике работы круг так закрашивается правильно.
circle (200, 150,50);
setfillstyle (1, 10);
floodfill (200,150, 15);

Вот я цикл переделал:
C++
1
2
3
4
5
6
7
8
9
10
for (c=0; c<n; c++)
    {
      circle (x,y,R);
      setfillstyle(SOLID_FILL, COLOR(red, green, blue));
      floodfill (200,150, 15);
      R-=dR;
      red-=dColor;
      green-=dColor;
      blue+=dColor;
}
Но почему-то 4й круг от центра не того цвета. Таким центром последний (центр) должен окраситься...
Миниатюры
Закрасить окружность  
b0nny
3 / 1 / 0
Регистрация: 11.11.2013
Сообщений: 338
20.04.2014, 21:31  [ТС]     Закрасить окружность #11
А всё, подправил.
floodfill (150,150,15);
Почему-то последнее число 15(белый)-граница линии как я понял не хочет меняться. Сразу всё становится под цвет, который я ставлю. Даже фон.
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,154
Завершенные тесты: 1
20.04.2014, 21:35     Закрасить окружность #12
Цитата Сообщение от b0nny Посмотреть сообщение
floodfill (200,150, 15);
заливает текущим цветом начиная с 200,150
Замените на floodfill (x,y, 15);
Кстати, почему 15?
Если границы кругов черные, то должен стоять ноль.
b0nny
3 / 1 / 0
Регистрация: 11.11.2013
Сообщений: 338
20.04.2014, 22:04  [ТС]     Закрасить окружность #13
"Кстати, почему 15?"
15-белый. Я просто скопипастил с примера. Сработало. Говорю, если меняю-всё, ужас.
Допустим 0-границы кругов белые, а всё вокруг чёрное.
Остальные, кроме 0-синий почему-то. На Миллисекунду заметил, что оно окрашивается в правильный цвет и сразу становится снова синий. А вот, если 14-то всё жёлтое, а линии белые.

Добавлено через 24 минуты
Остальные, кроме 0-синий почему-то. На Миллисекунду заметил, что оно окрашивается в правильный цвет и сразу становится снова синий.
Т.е. не правильно написал. Изначально вроде в правильном цвете, но тоже окрашивается всё подряд и всё синим закрашивается. Это очень быстро произошло. 1 раз только это заметил.
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,154
Завершенные тесты: 1
20.04.2014, 22:36     Закрасить окружность #14
Цитата Сообщение от b0nny Посмотреть сообщение
15-белый
Неправда Белый - это 0xFFFFFF
А окружности у Вас черные, т.е. надо floodfill (x,y, 0);
b0nny
3 / 1 / 0
Регистрация: 11.11.2013
Сообщений: 338
20.04.2014, 22:53  [ТС]     Закрасить окружность #15
Ну у меня в таблице цветов в источнике 16 пунктов. С 0-15. 15 указан белый.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.04.2014, 08:18     Закрасить окружность
Еще ссылки по теме:

Как закрасить линию? C++
Как закрасить круг (circle) C++
C++ Закрасить фигуру

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

Или воспользуйтесь поиском по форуму:
b0nny
3 / 1 / 0
Регистрация: 11.11.2013
Сообщений: 338
21.04.2014, 08:18  [ТС]     Закрасить окружность #16
Ну вот. Показываю результат с ним.
Миниатюры
Закрасить окружность  
Yandex
Объявления
21.04.2014, 08:18     Закрасить окружность
Ответ Создать тему
Опции темы

Текущее время: 07:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru