SFML и C++ Уроки \ Разработка игр › Форумы › SFML Graphics › Трансформация изображения (а так же его адаптивность под разные разрешения) › Ответ в теме: Трансформация изображения (а так же его адаптивность под разные разрешения)
Вот держи, должно помочь.
GetScr1() = 1% наименьшей стороны экрана, в основном это Y.
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 |
#pragma once #include"SFML/Graphics.hpp" #include<Windows.h> #define PI 3.14159265f typedef sf::Vector2f vec2f; class Resolution { protected: int m_scrx; int m_scry; int m_scrMain; float m_scr1; bool m_wideScr; public: virtual int GetScrWidth(); virtual int GetScrHeight(); virtual int GetScrMain(); virtual float GetScr1(); virtual bool GetWideScr(); virtual sf::FloatRect GetVisibleCamera(sf::View cam); virtual vec2f GetScrSize(); Resolution(void); }; |
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 |
#include "Resolution.h" int Resolution::GetScrWidth() { return m_scrx; } sf::FloatRect Resolution::GetVisibleCamera(sf::View cam) { return sf::FloatRect( cam.getCenter().x - GetScrWidth()/2.f, cam.getCenter().y - GetScrHeight()/2.f, (float)GetScrWidth(), (float)GetScrHeight() ); } int Resolution::GetScrHeight() { return m_scry; } int Resolution::GetScrMain() { return m_scrMain; } float Resolution::GetScr1() { return m_scr1; } bool Resolution::GetWideScr() { return m_wideScr; } vec2f Resolution::GetScrSize() { return vec2f((float)m_scrx, (float)m_scry); } Resolution::Resolution(void) { m_scrx = GetSystemMetrics(0), m_scry = GetSystemMetrics(1); if(m_scrx == 1280 || m_scrx == 1360 || m_scrx == 1366 || m_scrx == 1920) { if(m_scry == 720 || m_scry == 768 || m_scry == 800 || m_scry == 1080) m_wideScr = true; else m_wideScr = false; } if(m_scrx > m_scry) m_scrMain = m_scry; else m_scrMain = m_scrx; m_scr1 = (float)m_scrMain / 100.f; } |