Трансформация изображения (а так же его адаптивность под разные разрешения)

SFML и C++ Уроки \ Разработка игр Форумы SFML Graphics Трансформация изображения (а так же его адаптивность под разные разрешения)

В этой теме 23 ответа, 7 участников, последнее обновление  Mihail 6 года/лет, 3 мес. назад.

Просмотр 9 сообщений - с 16 по 24 (из 24 всего)
  • Автор
    Сообщения
  • #2977

    1a2b3c4d2
    Участник
    Сообщений:11

    Зарегистрирован:
    05.02.2016

    Репутация:2

    Можно ли ограничить setScale?(C++ 2013 SFML)

    К примеру не больше размера экрана или сохранение пропорций размера относительно дефолтного разрешения(пример дефолт 800×600 изображение 20×20 > при 1600×900 изображение 40×30).

    #2979
    +1
    Павел Букреев
    Павел Букреев
    Хранитель
    Сообщений:582

    Зарегистрирован:
    04.01.2015

    Репутация:106

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

    #3014

    1a2b3c4d2
    Участник
    Сообщений:11

    Зарегистрирован:
    05.02.2016

    Репутация:2

    Как получить размеры изображения?(не слепой сам вижу но как заставить C++/SFML записать размеры любого произвольно изображения – не знаю)

    Вот у нас есть image.png размером 600×400. Нам нужно присвоить xsize и ysize соответственно длину и ширину изображения(в дальнейшем изображений будет очень много и xsize = 600; ysize = 400; будет слишком долго вводить(прим. к тому же в ни одна программа для просмотра изображений и изменения их не знает заранее размера изображений))

    #3015
    +1
    RazorNd
    RazorNd
    Участник
    Сообщений:46

    Зарегистрирован:
    04.02.2016

    Репутация:38

    Получить размеры загруженного изображения можно так:

    #3018

    1a2b3c4d2
    Участник
    Сообщений:11

    Зарегистрирован:
    05.02.2016

    Репутация:2

    size.x и size.y “выражение перед скобками вероятного вызова должно иметь тип функции (pointer-to-)” Не как не врублюсь как это исправить?

    #3019
    +2
    Heisenberg
    Heisenberg
    Участник
    Сообщений:320

    Зарегистрирован:
    01.04.2015

    Репутация:146

    Это что за волшебство? int sizeX = size.x(), sizeY = size.y();

    #3020
    +1
    RazorNd
    RazorNd
    Участник
    Сообщений:46

    Зарегистрирован:
    04.02.2016

    Репутация:38

    Пардонте, проглядел в доке, что x и y это поля класса, а не методы. Правильно будет так:

     

    #3023
    +2

    1a2b3c4d2
    Участник
    Сообщений:11

    Зарегистрирован:
    05.02.2016

    Репутация:2

    Heisenberg, MatrixDeity и RazorNd СПАСИБО большое.
    Во-первых заменил const Vector2f defaultResolution = Vector2f(800.0F, 600.0F); на более удобный способ получения чисел для работы float xsize = (static_cast<float>(window.getSize().x) / size.x); fon.setScale(xsize , xsize); Во-вторых теперь это пременимо к ЛЮБЫМ изображениям.
    Осталось разобраться как создать массив из изображений чтобы при переключении они сменялись циклично(сохраняя настройки увеличения) и решить головную боль с центрированием. Пробовал fon.setPosition(); но он не особо удобен.
    Хотя хорошо что уже работает увеличение до высоты, до ширины, до полного экрана и возврат к нормальному размеру.

    #4957

    Mihail
    Участник
    Сообщений:4

    Зарегистрирован:
    08.01.2018

    Репутация:2

    Всем спасибо! Очень помогли.

    Используя примеры, сделал так:

     

Просмотр 9 сообщений - с 16 по 24 (из 24 всего)

Для ответа в этой теме необходимо авторизоваться.