Фигуры класса VertexArray
Шаблон SFML #include <SFML/Graphics.hpp> using namespace sf;
int main() { //======================================================// // Конструктор окна // //======================================================// RenderWindow window(VideoMode(500, 500), "Основа");
//======================================================// // Главный цикл программы // //======================================================// while (window.isOpen()) { // Конструктор обработчика событий Event event; while (window.pollEvent(event)) { if (event.type == Event::Closed) window.close(); } // Вызовы функций window.clear(); window.display(); } return 0; }
Линии #include <SFML/Graphics.hpp> #include <cmath> // для hypot using namespace sf;
int main() { RenderWindow window(VideoMode(500, 500), "lesson-1-2"); //====================================================== // Конструктор линии //====================================================== VertexArray line(Lines, 2); line[0].position = Vector2f(0, 0); line[0].color = Color::Blue; line[1].position = Vector2f(500, 500); // линия будет с градиентом line[1].color = Color::Cyan;
//====================================================== // Конструктор линии с изменяемой толщиной //====================================================== RectangleShape line2(Vector2f(hypot(500, 500), 5)); // Устанавливаем позицию откуда начинать рисовать line2.setPosition(0, 500); line2.setFillColor(Color(255, 0, 0)); // минус рисует вверх line2.rotate(-45);
while (window.isOpen()) { // Конструктор обработчика событий Event event; while (window.pollEvent(event)) { if (event.type == Event::Closed) window.close(); } // Вызовы функций window.clear(); window.draw(line); window.draw(line2); window.display();
} return 0; }
Синусоида #include <SFML/Graphics.hpp> #include <cmath> //для sin using namespace sf;
int main() { int W = 500; // Ширина и высота окна int H = 500; RenderWindow window(VideoMode(W, H), "lesson-1-3"); //====================================================== // Рисуем синусоиду с помощью Points //====================================================== VertexArray point(Points, W); double x = 0.0; int n = 2; // плотность кривой int h = H / 2 - 30; // высота кривой double d = 0.05; // плотность точек for (int i = 0; i < W; i++) { point[i].position = Vector2f(i * n, H / 2 - h * sin(x)); int clr = (i < 256 ? i : i % 255); point[i].color = Color(255 - clr, 0, clr); x += d; } //====================================================== // Главный цикл программы //====================================================== while (window.isOpen()) { // Конструктор обработчика событий Event event; while (window.pollEvent(event)) { if (event.type == Event::Closed) window.close(); } // Вызовы функций window.clear(); window.draw(point); window.display(); } return 0; }
Фигуры класса VertexArray #include <SFML/Graphics.hpp> using namespace sf;
int main() { RenderWindow window(VideoMode(500, 500), "lesson-1-4"); //====================================================== // Градиентный треугольник //====================================================== VertexArray tri(Triangles, 3); tri[0].position = Vector2f(30, 30); tri[0].color = Color::Blue; tri[1].position = Vector2f(130, 30); tri[1].color = Color::Green; tri[2].position = Vector2f(30, 200); tri[2].color = Color::Red; //====================================================== // Градиентный прямоугольник //====================================================== VertexArray qua(Quads, 4); qua[0].position = Vector2f(160, 30); qua[1].position = Vector2f(280, 30); qua[1].color = Color::Blue; qua[2].position = Vector2f(280, 100); qua[2].color = Color::Blue; qua[3].position = Vector2f(160, 100); //====================================================== // Неправильный многоугольник //====================================================== VertexArray way(sf::TrianglesStrip, 16); way[0].position = Vector2f(440, 20); way[1].position = Vector2f(350, 20); way[2].position = Vector2f(480, 60); way[3].position = Vector2f(390, 60); way[4].position = Vector2f(400, 150); way[5].position = Vector2f(310, 150); way[6].position = Vector2f(460, 190); way[7].position = Vector2f(370, 190); way[8].position = Vector2f(460, 280); way[9].position = Vector2f(370, 280); way[10].position = Vector2f(430, 350); way[11].position = Vector2f(340, 350); way[12].position = Vector2f(430, 400); way[13].position = Vector2f(340, 400); way[14].position = Vector2f(490, 480); way[15].position = Vector2f(400, 480); for (int i = 0; i < 16; i++) way[i].color = Color::Yellow; //====================================================== // "Неполный" восьмиугольник //====================================================== VertexArray octa(sf::TrianglesFan, 9); octa[0].position = Vector2f(200, 300); octa[1].position = Vector2f(300, 300); octa[2].position = Vector2f(280, 380); octa[3].position = Vector2f(200, 400); octa[4].position = Vector2f(130, 380); octa[5].position = Vector2f(100, 300); octa[6].position = Vector2f(130, 230); octa[7].position = Vector2f(200, 200); octa[8].position = Vector2f(280, 230); for (int i = 0; i < 9; i++) octa[i].color = Color::Magenta;
//====================================================== // Главный цикл программы //====================================================== while (window.isOpen()) { // Конструктор обработчика событий Event event; while (window.pollEvent(event)) { if (event.type == Event::Closed) window.close(); } // Вызовы функций window.clear(); window.draw(tri); window.draw(qua); window.draw(way); window.draw(octa); window.display(); } return 0; }
Создание простых геометрических фигур #include <SFML/Graphics.hpp>
using namespace sf; // подключаем пространство имён sf
int main() { // Устанавливаем 8-ой уровень сглаживания ContextSettings settings; settings.antialiasingLevel = 8;
// Объект, который, собственно, является главным окном приложения RenderWindow window(VideoMode(500, 300), "SFML Works!", Style::Default, settings);
// Главный цикл приложения: выполняется, пока открыто окно while (window.isOpen()) { // Обрабатываем очередь событий в цикле Event event; while (window.pollEvent(event)) { // Пользователь нажал на «крестик» и хочет закрыть окно? if (event.type == Event::Closed) window.close(); // тогда закрываем его } // Установка цвета фона window.clear(Color(250, 220, 100, 0));
// Устанавливаем круг радиусом 50 CircleShape circle(50.f); circle.setFillColor(Color(230, 0, 230)); // закрашиваем наш круг circle.setOutlineThickness(15.f); // устанавливаем толщину контура круга circle.setOutlineColor(Color(80, 220, 50)); // устанавливаем цвет контура circle.move(15, 15); // перемещаем круг для корректного отображения в окне window.draw(circle); // отрисовка круга
// Создаём треугольник CircleShape triangle(65.f, 3); triangle.setPosition(125, 0); // устанавливаем начальную позицию справа от круга triangle.setFillColor(Color::Blue); // устанавливаем цвет треугольника - синий window.draw(triangle); // отрисовка треугольника
// Создаём квадрат CircleShape square(60.f, 4); square.setPosition(250, 0); // устанавливаем начальную позицию справа от треугольника square.setFillColor(Color::Red); // устанавливаем цвет квадрата - красный window.draw(square); // отрисовка квадрата
// Создаём октагон CircleShape octagon(60.f, 8); octagon.setPosition(380, 0); // устанавливаем начальную позицию справа от квадрата octagon.setFillColor(Color::Cyan); // устанавливаем цвет октагона - бирюзовый window.draw(octagon); // отрисовка октагона
// Заготовка фигуры многоугольника ConvexShape convex; convex.setPointCount(5); // устанавливаем ему 5 вершин
// Устанавливаем координаты вершин convex.setPoint(0, Vector2f(0.f, 0.f)); convex.setPoint(1, Vector2f(150.f, 10.f)); convex.setPoint(2, Vector2f(120.f, 90.f)); convex.setPoint(3, Vector2f(30.f, 100.f)); convex.setPoint(4, Vector2f(5.f, 50.f));
convex.setFillColor(Color::Black); // устанавливаем цвет многоугольника - чёрный convex.move(1, 150); // теперь сдвинем его вниз и чуть-чуть вправо window.draw(convex); // отрисовка многоугольника
// Создаём прямоугольник размером 70 х 100 RectangleShape rectangle(Vector2f(70.f, 100.f)); rectangle.move(165, 150); // перемещаем его в нижний ряд справа от многоугольника rectangle.setFillColor(Color(175, 180, 240)); // устанавливаем цвет прямоугольника window.draw(rectangle); // отрисовка прямоугольника
// Линия с заданной толщиной RectangleShape line_with_thickness(Vector2f(130.f, 5.f)); line_with_thickness.rotate(45.f); // поворачиваем её на 45 градусов line_with_thickness.setFillColor(Color(15, 180, 140)); // устанавливаем цвет линии line_with_thickness.move(250, 150); // перемещаем её в нижний ряд справа от прямоугольника window.draw(line_with_thickness); // отрисовка линии
// Линия с нулевой толщиной. Создаём её в качестве массива вершин типа Vortex Vertex line_without_thickness[] = { Vertex(Vector2f(390.f, 240.f)), // координата первой вершины Vertex(Vector2f(470.f, 150.f)) // координата второй вершины }; line_without_thickness->color = Color::Black; // устанавливаем цвет линии - чёрный window.draw(line_without_thickness, 2, Lines); // отрисовка линии
// Отрисовка окна window.display(); }
return 0; }
Популярное: Личность ребенка как объект и субъект в образовательной технологии: В настоящее время в России идет становление новой системы образования, ориентированного на вхождение... Организация как механизм и форма жизни коллектива: Организация не сможет достичь поставленных целей без соответствующей внутренней... Модели организации как закрытой, открытой, частично открытой системы: Закрытая система имеет жесткие фиксированные границы, ее действия относительно независимы... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (337)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |