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

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

Войти
Регистрация
Восстановить пароль
 
Гузеля
0 / 0 / 0
Регистрация: 26.12.2012
Сообщений: 12
#1

Графика: Разноцветный шестиугольник - C++

10.03.2013, 23:28. Просмотров 821. Ответов 7
Метки нет (Все метки)

Написать программу, генерирующую на экране разноцветный шестиугольник, цвета секторов которого меняются циклически. После трех циклов смены цветов фигура уничтожается.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.03.2013, 23:28     Графика: Разноцветный шестиугольник
Посмотрите здесь:

Разноцветный текст C++
C++ Графика
C++ Графика(((
Графика C++
Графика C++
C++ Разноцветный текст в ListBox
C++ Нарисовать шестиугольник
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
 Аватар для Kuzia domovenok
1886 / 1741 / 117
Регистрация: 25.03.2012
Сообщений: 5,916
Записей в блоге: 1
10.03.2013, 23:38     Графика: Разноцветный шестиугольник #2
а как выводить графику?
zelim
77 / 77 / 4
Регистрация: 26.12.2011
Сообщений: 217
10.03.2013, 23:50     Графика: Разноцветный шестиугольник #3
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
а как выводить графику?
По-моему, аффтар не в том разделе написал.
Здесь без WinAPI не обойтись )
А так, навскидку: в обработке WM_PAINT нужно будет создать кисть CreateSolidBrush, выбрать её SelectObject и нарисовать отдельно сектора Polygon.
Студии под рукой нет, так что примерный ход решения даю.
Croessmah
10.03.2013, 23:56
  #4

Не по теме:

Цитата Сообщение от zelim Посмотреть сообщение
Здесь без WinAPI не обойтись )
А может это в Линуксе надо?
Или какой-нибудь graphics.h

Гузеля
0 / 0 / 0
Регистрация: 26.12.2012
Сообщений: 12
11.03.2013, 00:03  [ТС]     Графика: Разноцветный шестиугольник #5
Кстати, мы работаем в SFML библиотеке))

Добавлено через 1 минуту
Кстати, мы работаем в SFML библиотеке)) Графику я начала из 6 треугольников делать.
Вот, до чего я додумалась, а дальше никак...

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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include "stdafx.h"
#include "SFML/Graphics.hpp"
#include <math.h>
#include <SFML/Graphics/ConvexShape.hpp>
 
#define Box_X 1200 //ширина окна
#define Box_Y 760 //высота окна
#define MaxFrameRate 60 //скорость обновления окна
 
int _tmain(int arg, _TCHAR* argv [])
{
 
    sf::RenderWindow window(sf::VideoMode(Box_X, Box_Y), "My animation =)");
    window.setFramerateLimit(MaxFrameRate);
    //int i=0;
    float vx=5.,vy=5., R=30.;
 
    sf::ConvexShape polygon1;
polygon1.setPointCount(3);
polygon1.setFillColor(sf::Color::Red);
polygon1.setPoint(0, sf::Vector2f(300,300));
polygon1.setPoint(1, sf::Vector2f(300,0));
polygon1.setPoint(2, sf::Vector2f(0,100));
polygon1.setPosition(100, 50);
 
sf::ConvexShape polygon2;
polygon2.setPointCount(3);
polygon2.setFillColor(sf::Color::Yellow);
polygon2.setPoint(0, sf::Vector2f(300,300));
polygon2.setPoint(1, sf::Vector2f(600,100));
polygon2.setPoint(2, sf::Vector2f(300,0));
polygon2.setPosition(100, 50);
 
    sf::ConvexShape polygon3;
polygon3.setPointCount(3);
polygon3.setFillColor(sf::Color::Green);
polygon3.setPoint(0, sf::Vector2f(300, 300));
polygon3.setPoint(1, sf::Vector2f(600,100));
polygon3.setPoint(2, sf::Vector2f(600,500));
polygon3.setPosition(100, 50);
 
sf::ConvexShape polygon4;
polygon4.setPointCount(3);
polygon4.setFillColor(sf::Color::Cyan);
polygon4.setPoint(0, sf::Vector2f(300, 300));
polygon4.setPoint(1, sf::Vector2f(600,500));
polygon4.setPoint(2, sf::Vector2f(300,600));
polygon4.setPosition(100, 50);
 
sf::ConvexShape polygon5;
polygon5.setPointCount(3);
polygon5.setFillColor(sf::Color::Blue);
polygon5.setPoint(0, sf::Vector2f(300, 300));
polygon5.setPoint(1, sf::Vector2f(0,500));
polygon5.setPoint(2, sf::Vector2f(300,600));
polygon5.setPosition(100, 50);
 
sf::ConvexShape polygon6;
polygon6.setPointCount(3);
polygon6.setPoint(0, sf::Vector2f(300, 300));
polygon6.setPoint(1, sf::Vector2f(0,100));
polygon6.setPoint(2, sf::Vector2f(0, 500));
polygon6.setFillColor(sf::Color::Magenta);
polygon6.setPosition(100, 50);
zelim
77 / 77 / 4
Регистрация: 26.12.2011
Сообщений: 217
11.03.2013, 00:06     Графика: Разноцветный шестиугольник #6
Цитата Сообщение от Croessmah Посмотреть сообщение

Не по теме:


А может это в Линуксе надо?
Или какой-нибудь graphics.h

Не по теме:

Это была попытка поиграть в экстрасенса ))
В половине (а то и больше) созданных тем нужно самому додумываться, чего хочет топикстартер

Гузеля
0 / 0 / 0
Регистрация: 26.12.2012
Сообщений: 12
11.03.2013, 00:14  [ТС]     Графика: Разноцветный шестиугольник #7
Я хочу, чтобы менялись цвета у этих полигонов. А как - не знаю.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.05.2016, 08:32     Графика: Разноцветный шестиугольник
Еще ссылки по теме:

C++ Графика в C++
C++ Нарисовать на экране шестиугольник C++
Разноцветный текст в консоли C++
Графика в Си++ C++
C++ Нарисовать правильный шестиугольник, вписанный в окружность, и заставить его крутиться по этой окружности

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

Или воспользуйтесь поиском по форуму:
Den1s
0 / 0 / 1
Регистрация: 12.12.2015
Сообщений: 11
30.05.2016, 08:32     Графика: Разноцветный шестиугольник #8
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
#include <SFML/Graphics.hpp> //заголовочный файл, отвечающий за работу с графикой
 
using namespace sf;//пространство имен
 
void main()
{
    // Цвета RGB
    int R = 0;
    int G = 255;
    int B = 0;
    int A = 255;
 
    // Класс Time и Clock
    Clock clock;//класс для измерения времени
    Time time;//класс определяет временной интервал
 
    int i = 0, t = 0;
    float swichtime = 0;
 
    RenderWindow window(VideoMode(1024, 768), "My Window"); //функция, отвечающая за появление окна
 
    ConvexShape triangle[6];// создаем сектора шестиугольника
 
    triangle[0].setPointCount(3);// устанавливаем колличество точек произвольной фигуры
    triangle[0].setFillColor(Color::Red);//цвет произвольной фигуры
    triangle[0].setPoint(0, Vector2f(300, 300));//определяем точки для произвольной фигуры
    triangle[0].setPoint(1, Vector2f(300, 0));
    triangle[0].setPoint(2, Vector2f(0, 100));
    triangle[0].setPosition(100, 50); //устанавливаем положение объекта 
        
    triangle[1].setPointCount(3);
    triangle[1].setFillColor(Color::Yellow);
    triangle[1].setPoint(0, Vector2f(300, 300));
    triangle[1].setPoint(1, Vector2f(600, 100));
    triangle[1].setPoint(2, Vector2f(300, 0));
    triangle[1].setPosition(100, 50);
 
    triangle[2].setPointCount(3);
    triangle[2].setFillColor(Color::Green);
    triangle[2].setPoint(0, Vector2f(300, 300));
    triangle[2].setPoint(1, Vector2f(600, 100));
    triangle[2].setPoint(2, Vector2f(600, 500));
    triangle[2].setPosition(100, 50);
        
    triangle[3].setPointCount(3);
    triangle[3].setFillColor(Color::Cyan);
    triangle[3].setPoint(0, Vector2f(300, 300));
    triangle[3].setPoint(1, Vector2f(600, 500));
    triangle[3].setPoint(2, Vector2f(300, 600));
    triangle[3].setPosition(100, 50);
        
    triangle[4].setPointCount(3);
    triangle[4].setFillColor(Color::Blue);
    triangle[4].setPoint(0, Vector2f(300, 300));
    triangle[4].setPoint(1, Vector2f(0, 500));
    triangle[4].setPoint(2, Vector2f(300, 600));
    triangle[4].setPosition(100, 50);
 
    triangle[5].setPointCount(3);
    triangle[5].setFillColor(Color::Magenta);
    triangle[5].setPoint(0, Vector2f(300, 300));
    triangle[5].setPoint(1, Vector2f(0, 100));
    triangle[5].setPoint(2, Vector2f(0, 500));
    triangle[5].setPosition(100, 50);
        
    while (window.isOpen())//обязательный цыкл для открытия окна
    {
        Event event;
        while (window.pollEvent(event))
        {
            if (event.type == Event::Closed)
                window.close();
        }
 
        //циклическая смена цвета секторов
        time = clock.getElapsedTime(); //Время, функция getElapsedTime() возвращает время
        if (time.asSeconds() > 1)
        {
            R = rand() % 255;
            G = rand() % 255;
            B = rand() % 255;
 
            if (swichtime == 0)
            {
                triangle[i].setFillColor(Color(R, G, B, A));
                i++;
            }
            swichtime = clock.getElapsedTime().asSeconds();
            if (swichtime > 1)
            {
                clock.restart(); swichtime = 0; //restart() перезапускает часы
            }
            if (i > 5)
            {
                i = 0;
                t=t+1;
            }
        }
 
        window.clear();//очищает экран.
        for (int i = 0; i < 6; i++)
        {
            window.draw(triangle[i]); //рисует объект.
        }
        window.display(); //показывает объекты
 
        if (t == 3) 
        { 
            for (int i = 0; i < 6; i++)
            {
                triangle[i].setFillColor(Color::Black);
            }
        }
    }
}
Yandex
Объявления
30.05.2016, 08:32     Графика: Разноцветный шестиугольник
Ответ Создать тему
Опции темы

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