[C++, SFML] Lustrzane odbicie pozycji myszy y w stosunku do środka sprite'a
Ostatnio zmodyfikowano 2015-01-01 01:04
Winner_Of_Death Temat założony przez niniejszego użytkownika |
[C++, SFML] Lustrzane odbicie pozycji myszy y w stosunku do środka sprite'a » 2014-12-31 16:02:45 Witam. Próbuję napisać swego rodzaju painta, aczkolwiek napotkałem problem, mianowicie linia rysowana na texturze (która potem jest wyświetlana na spricie), odbija się w lustrzanym stosunku do środka sprite'a. Żeby to lepiej zobrazować, napisałem krótki kod (przecież nikomu nie chciałoby się czytać mojego pełnego, parosetnego kodu ;), oraz dołączam obrazek: #include <SFML/graphics.hpp> #include <vector>
int main() { sf::RenderTexture rkartka; sf::Sprite kartka; sf::RenderWindow okno; std::vector < sf::Vertex > linie; okno.create( sf::VideoMode( 800, 600, 32 ), "?" ); bool mozna_malowac = false; rkartka.create( 400, 400 ); kartka.setPosition( 50, 50 ); rkartka.clear( sf::Color::White ); do { sf::Event zdarzenie; while( okno.pollEvent( zdarzenie ) ) { if( zdarzenie.type == sf::Event::KeyPressed && zdarzenie.key.code == sf::Keyboard::Escape || zdarzenie.type == sf::Event::Closed ) okno.close(); if( zdarzenie.type == sf::Event::MouseMoved && mozna_malowac == true ) linie.push_back( sf::Vertex( sf::Vector2f( sf::Mouse::getPosition( okno ).x - kartka.getPosition().x, sf::Mouse::getPosition( okno ).y - kartka.getPosition().y ), sf::Color::Black ) ); if( zdarzenie.type == sf::Event::MouseButtonPressed &&( zdarzenie.key.code == sf::Mouse::Left ) ) mozna_malowac = true; if( zdarzenie.type == sf::Event::MouseButtonReleased ) { mozna_malowac = false; linie.clear(); } } rkartka.draw( & linie[ 0 ], linie.size(), sf::LinesStrip ); kartka.setTexture( rkartka.getTexture() ); okno.clear( sf::Color::Black ); okno.draw( kartka ); okno.display(); } while( okno.isOpen() ); }
http://holey.cba.pl/Przechwytywanie.PNGCzyżby trzeba było obracać coś o 180 stopni? A może ręcznie liczyć pozycję y przy rysowaniu? Proszę o pomoc. |
|
1aam2am1 |
» 2014-12-31 17:13:37 kartka.setTexture( rkartka.getTexture() ); przed tym wstaw rkartka.display(); |
|
Winner_Of_Death Temat założony przez niniejszego użytkownika |
» 2015-01-01 01:04:00 Dziękuję bardzo za trafną odpowiedź!
Chciałbym również życzyć wszystkim szczęśliwego Nowego Roku! ;) |
|
« 1 » |