SFML и C++ Уроки \ Разработка игр › Форумы › SFML Graphics › Трансформация изображения (а так же его адаптивность под разные разрешения) › Ответ в теме: Трансформация изображения (а так же его адаптивность под разные разрешения)
Всем спасибо! Очень помогли.
Используя примеры, сделал так:
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 |
int main() { sf::Texture backgroundTexture; if (!backgroundTexture.loadFromFile("Data/RedBackground.jpg")) // RedBackground.jpg 800x600 return EXIT_FAILURE; sf::Sprite background(backgroundTexture); sf::RenderWindow window(sf::VideoMode(1024, 650), "Test Background Size", sf::Style::Close | sf::Style::Resize); window.setVerticalSyncEnabled(true); Vector2u size = backgroundTexture.getSize(); float xsize = (static_cast<float>(window.getSize().x) / size.x); float ysize = (static_cast<float>(window.getSize().y) / size.y); float sScale; if (xsize > ysize) { sScale = ysize; } else { sScale = xsize; } background.setScale(sScale, sScale); FloatRect fRect = background.getGlobalBounds(); int px = (window.getSize().x - fRect.width) / 2; int py = (window.getSize().y - fRect.height) / 2; background.setPosition(px, py); while (window.isOpen()) { sf::Event event; while (window.pollEvent(event)) { if (event.type == sf::Event::Closed) { window.close(); } else if (event.type == sf::Event::Resized) { // Тут ещё нужно подумать } } window.clear(); window.draw(background); window.display(); } return EXIT_SUCCESS; } |