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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
b0nny
4 / 2 / 0
Регистрация: 11.11.2013
Сообщений: 347
#1

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

20.04.2014, 14:18. Просмотров 667. Ответов 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++):

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

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

Закрасить фигуру - C++
Строятся многоугольники с общей стороной , нужно их закрасить разными цветами ( или хотя бы одним ) попыталась сделать выдаёт ошибку...

Как закрасить треугольник? - C++
Как мне закрасить треугольники? #include&lt;windows.h&gt; #include&lt;string.h&gt; #define ID_TIMER 1 HBRUSH tbrush; HBRUSH tbrush1; ...

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

Как закрасить Rectangle - C++
Всем привет, у меня такая проблема - сделал програмку которая рисует рандомно прямоугольники в небольшой форме, теперь хочу чтобы они были...

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

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

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

Как закрасить шар полностью? - C++
Здравствуйте! Мне хотелось закрасить шар полностью, но при использовании команды SetFillColor закрашивался фон. Где у меня в логике...

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

Закрасить текст определённым цветом в консоли - C++
Привет, подскажыте пожалуста как можно закрасить текст, при чем мне нужно например штобы 1 рядок был одним кольором второй вторим. ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
20.04.2014, 22:53
Ответ Создать тему
Опции темы

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