• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wyskalowanie Tekstury w SFML

VPS Starter Arubacloud
+1 głos
371 wizyt
pytanie zadane 7 lutego 2016 w C i C++ przez zmiennoimienny Mądrala (5,540 p.)
Witam
Zmagam się z pewnym problemem, mianowicie:
W jaki sposób wyskalować Teksture w SFML? (nie mówię tu o .setScale)  
Przykładowo:
Wejście - Tekstura 20x20
Wyjście - Tekstura 100x100.
W jaki sposób to wykonać?

1 odpowiedź

–1 głos
odpowiedź 7 lutego 2016 przez jegor377 Stary wyjadacz (13,230 p.)

Nie wiem czy o to Ci chodzi, ale znajdziesz coś o skalowaniu sprita pod "Skalowanie sprajta" - http://cpp0x.pl/kursy/Kurs-SFML-2-x-C++/Podstawy/Przemieszczanie-skalowanie-i-obracanie-sprajtow/484

 

Skalowanie sprajta

Klasa sf::Sprite posiada następujące metody do skalowania:

C/C++

void setScale( float factorX, float factorY );
void setScale( const Vector2f & factors );

void scale( const Vector2f & factor )
void scale( float factorX, float factorY );

const Vector2f & getScale() const;

Jak można zauważyć, SFML pozwala na modyfikowanie wysokości i szerokości obiektu niezależnie od siebie.

Ustawianie skali - metody setScale

setScale ustawia skalowanie obiektu względem oryginalnych rozmiarów.

C/C++

sprajt.setScale( 1, 2 );
sprajt.setScale( sf::Vector2f( 0.5, 0.5 ) );

W pierwszej linii szerokość sprajta pozostaje bez zmian, a wysokość jest 2 razy większa. W drugiej, szerokość i wysokość są 2 razy mniejsze.

Aktualna skala - metoda getScale

Metoda getScale zwraca aktualną skalę w formie obiektu sf::Vector2f. Domyślna skala to 1, 1.

Modyfikowanie skali - metody scale

Metody scale skalują poprzednio wyskalowany obiekt.

C/C++

sprajt.setScale( 1, 2 );
sprajt.scale( 2, 1 );
sprajt.scale( sf::Vector2f( 0.5, 0.5 ) );

Po wykonaniu tego kodu, obraz będzie w naturalnych rozmiarach, ponieważ 1 * 2 * 0.5 = 1.
Oba poniższe zapisy są równoważne:

C/C++

sprajt.scale( 2, 3 );
sprajt.setScale( sprajt.getScale().* 2, sprajt.getScale().* 3 );

komentarz 7 lutego 2016 przez pietrzakacper Mądrala (7,480 p.)
Napisał, że nie chodzi mu o .setScale()
komentarz 7 lutego 2016 przez jegor377 Stary wyjadacz (13,230 p.)
aaa, nie patrzę. Zmęczony jestem. Sry.
komentarz 7 lutego 2016 przez jegor377 Stary wyjadacz (13,230 p.)
to co on chce zrobić? Przecież ta metoda robi dokładnie to co on chce... :/
komentarz 7 lutego 2016 przez pietrzakacper Mądrala (7,480 p.)

Chodzi mu o taką funkcję:

sf::Texture getScaledTexture(const sf::Texture & texture, Vector2f scale)

 

Podobne pytania

0 głosów
0 odpowiedzi 207 wizyt
pytanie zadane 26 sierpnia 2020 w Systemy operacyjne, programy przez PanPrezes Obywatel (1,520 p.)
0 głosów
1 odpowiedź 220 wizyt
pytanie zadane 24 kwietnia 2016 w C i C++ przez Munvik Dyskutant (9,350 p.)
+1 głos
1 odpowiedź 1,328 wizyt

92,453 zapytań

141,262 odpowiedzi

319,086 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...