Мегаобучалка Главная | О нас | Обратная связь


Фигуры класса VertexArray



2020-03-19 337 Обсуждений (0)
Фигуры класса VertexArray 0.00 из 5.00 0 оценок




Шаблон 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;

}



2020-03-19 337 Обсуждений (0)
Фигуры класса VertexArray 0.00 из 5.00 0 оценок









Обсуждение в статье: Фигуры класса VertexArray

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Личность ребенка как объект и субъект в образовательной технологии: В настоящее время в России идет становление новой системы образования, ориентированного на вхождение...
Организация как механизм и форма жизни коллектива: Организация не сможет достичь поставленных целей без соответствующей внутренней...
Модели организации как закрытой, открытой, частично открытой системы: Закрытая система имеет жесткие фиксированные границы, ее действия относительно независимы...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (337)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.008 сек.)