Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
b0nny
5 / 3 / 2
Регистрация: 11.11.2013
Сообщений: 349
#1

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

20.04.2014, 14:18. Просмотров 913. Ответов 15
Метки нет (Все метки)

Помогите закрасить таким образом...
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();
}
0
Миниатюры
Закрасить окружность  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.04.2014, 14:18
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Закрасить окружность (C++):

Окружность вписана в квадрат заданной площади; найти площадь квадрата, вписанного в эту окружность
Окружность вписана в квадрат заданной площади. Найти площадь квадрата,...

Закрасить фигуру
Строятся многоугольники с общей стороной , нужно их закрасить разными цветами (...

закрасить круг
подскажите как можно нарисовать закрасить круг в borlandc

Как закрасить Rectangle
Всем привет, у меня такая проблема - сделал програмку которая рисует рандомно...

Как закрасить линию?
Вот линия MoveToEx(hdc,0,350,0); LineTo(hdc,700,350); Как сделать чтобы...

Как закрасить треугольник?
Как мне закрасить треугольники? #include&lt;windows.h&gt; #include&lt;string.h&gt;...

15
zss
Модератор
Эксперт С++
6950 / 6512 / 4133
Регистрация: 18.12.2011
Сообщений: 17,173
Завершенные тесты: 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;
}
0
b0nny
5 / 3 / 2
Регистрация: 11.11.2013
Сообщений: 349
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();
}
Так?
Пока тоже рисует круги, но ничего не закрашивает...
0
zss
Модератор
Эксперт С++
6950 / 6512 / 4133
Регистрация: 18.12.2011
Сообщений: 17,173
Завершенные тесты: 1
20.04.2014, 15:25 #4
Я не знаю, как менять цвет закраски в graphics.h.
Похоже, предположение, что это setbkcolor(color);
оказалось неверным.
Найдите в помощи по graphics.h как это делать.
0
b0nny
5 / 3 / 2
Регистрация: 11.11.2013
Сообщений: 349
20.04.2014, 15:27  [ТС] #5
У меня есть такая теория, но реализовать у меня не получилось..
0
Миниатюры
Закрасить окружность  
zss
Модератор
Эксперт С++
6950 / 6512 / 4133
Регистрация: 18.12.2011
Сообщений: 17,173
Завершенные тесты: 1
20.04.2014, 15:33 #6
Кажется нашел
C++
1
setfillstyle( SOLID_FILL,color);
0
b0nny
5 / 3 / 2
Регистрация: 11.11.2013
Сообщений: 349
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));
Как-то так?
0
zss
Модератор
Эксперт С++
6950 / 6512 / 4133
Регистрация: 18.12.2011
Сообщений: 17,173
Завершенные тесты: 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;
    }
0
b0nny
5 / 3 / 2
Регистрация: 11.11.2013
Сообщений: 349
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();
}
Ничего не красит...
0
Миниатюры
Закрасить окружность  
b0nny
5 / 3 / 2
Регистрация: 11.11.2013
Сообщений: 349
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й круг от центра не того цвета. Таким центром последний (центр) должен окраситься...
0
Миниатюры
Закрасить окружность  
b0nny
5 / 3 / 2
Регистрация: 11.11.2013
Сообщений: 349
20.04.2014, 21:31  [ТС] #11
А всё, подправил.
floodfill (150,150,15);
Почему-то последнее число 15(белый)-граница линии как я понял не хочет меняться. Сразу всё становится под цвет, который я ставлю. Даже фон.
0
zss
Модератор
Эксперт С++
6950 / 6512 / 4133
Регистрация: 18.12.2011
Сообщений: 17,173
Завершенные тесты: 1
20.04.2014, 21:35 #12
Цитата Сообщение от b0nny Посмотреть сообщение
floodfill (200,150, 15);
заливает текущим цветом начиная с 200,150
Замените на floodfill (x,y, 15);
Кстати, почему 15?
Если границы кругов черные, то должен стоять ноль.
0
b0nny
5 / 3 / 2
Регистрация: 11.11.2013
Сообщений: 349
20.04.2014, 22:04  [ТС] #13
"Кстати, почему 15?"
15-белый. Я просто скопипастил с примера. Сработало. Говорю, если меняю-всё, ужас.
Допустим 0-границы кругов белые, а всё вокруг чёрное.
Остальные, кроме 0-синий почему-то. На Миллисекунду заметил, что оно окрашивается в правильный цвет и сразу становится снова синий. А вот, если 14-то всё жёлтое, а линии белые.

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

Закрасить участок шахматной доски
Люди помогите плиз, у меня в С++ вообще башка не варит((( написать программу...

Как закрасить шар полностью?
Здравствуйте! Мне хотелось закрасить шар полностью, но при использовании...

Как закрасить круг (circle)
Как закрасить круг в любой цвет, не могу найти таких ф-ций, setfillstyle не...

Закрасить текст определённым цветом в консоли
Привет, подскажыте пожалуста как можно закрасить текст, при чем мне нужно...


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

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

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