Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SFML, C++] Wycinanie części obrazu z kontenera std::map

Ostatnio zmodyfikowano 2011-08-25 15:55
Autor Wiadomość
Dark
Temat założony przez niniejszego użytkownika
[SFML, C++] Wycinanie części obrazu z kontenera std::map
» 2011-08-25 13:06:08
Witam, mam problem z wycinaniem części obrazu, ponieważ wyświetla mi cały obraz zamiast wycinać jego część z kontenera std::map, otóż mam takie linijki kodu i one wyświetlają całe obrazy a nie ich część:
C/C++
sf::Sprite & Boh =( * SprajtyP->SprajtMap.find( "hero" ) ).second;
// ...
// while( okno.IsOpened())
// ...
if( klatka <= 30 && stand )
{
    if( klatka < 15 )
         Boh.SetSubRect( sf::IntRect( 0, 0, 40, 40 ) );
   
    else
         Boh.SetSubRect( sf::IntRect( 0, 40, 40, 80 ) );
   
    klatka++;
}
else
     klatka = 0;


@edit Poradziłem sobie tworząc zmienną sf::Sprite lecz w tej zmiennej nie wyświetla mi obrazu
P-39915
DejaVu
» 2011-08-25 13:28:53
Najwyraźniej
stand = false;
.

PS.
* SprajtyP->SprajtMap.find( "hero" )
 ten kod jest błędny :)
P-39916
Dark
Temat założony przez niniejszego użytkownika
» 2011-08-25 13:31:41
A co w tym kodzie jest błędnego?

PS.
stand = true
 :P
P-39917
DejaVu
» 2011-08-25 13:32:49
jeżeli hero nie istnieje = wywalenie aplikacji :)

/edit:
C/C++
sf::Sprite & Boh = //(...)
P-39918
Dark
Temat założony przez niniejszego użytkownika
» 2011-08-25 13:37:14
U mnie aplikacji nie wywala bo tworzę ją wcześniej więc nie ma możliwości, jedyne co mi się robi to : http://ifotos.pl/zobacz/Przechwyt_haxpner.PNG/

@edit
C/C++
sf::Sprite & Boh = //(...)
 nic nie pomogło na pusty obraz
P-39919
DejaVu
» 2011-08-25 13:59:39
no to może renderujesz coś innego niż myślisz :)
P-39923
Dark
Temat założony przez niniejszego użytkownika
» 2011-08-25 14:08:18
Obraz to dokładnie się tworzy w tym:
C/C++
SprajtyP->AddImage( "ludz1.png" );
SprajtyP->AddNameSprite( "hero", "ludz1.png" );

a klasa Sprite'owa i Image'owa wygląda tak i klasa Sprite dziedziczy z Image'a:
C/C++
class Image
{
protected:
    map < string, sf::Image > ImageMap;
public:
    void AddImage( string FileName )
    {
        sf::Image & ImageI = ImageMap[ FileName ];
        if( ImageI.LoadFromFile( FileName ) )
        {
            ImageI.SetSmooth( false );
           
        }
        else
             cout << "Błąd wczytywania " << FileName << endl;
       
    }
    void ListOfImage()
    {
        if( !ImageMap.empty() )
        {
            map < string, sf::Image >::iterator itImageMap;
            short int Lp = 1;
            cout << "Lista obrazow" << endl;
            for( itImageMap = ImageMap.begin(); itImageMap != ImageMap.end(); itImageMap++ )
            {
                cout << Lp << ". " <<( * itImageMap ).first << endl;
                Lp++;
            }
        }
        else
             cout << "Brak images" << endl;
       
    }
};

class Sprite
    : public Image
{
public:
    map < string, sf::Sprite > SprajtMap;
   
    void AddNameSprite( string SprajtName, string ImageSrc )
    {
        sf::Sprite & SprajtO = SprajtMap[ SprajtName ];
        SprajtO.SetImage(( * ImageMap.find( ImageSrc ) ).second );
       
    }
   
    void ListSprajtIm()
    {
        if( !SprajtMap.empty() )
        {
            cout << "Sprajty" << endl;
            map < string, sf::Sprite >::iterator itSprajtMap;
            for( itSprajtMap = SprajtMap.begin(); itSprajtMap != SprajtMap.end(); itSprajtMap++ )
                 cout << "SprajtMap - " <<( * itSprajtMap ).first << endl;
           
        }
        else
             cout << "Brak jakiegokolwiek sprite'a" << endl;
       
    }
   
};
 
@edit Może nie da rady przesłać z mapy Image'ów do mapy Sprite'ów?
@edit2 też trzeba użyć '&' do mapy Image'ów. Skąd mam wiedzieć kiedy używać ampresandu a kiedy nie? Gdzie mogę o tym przeczytać?
P-39925
SeaMonster131
» 2011-08-25 14:49:20
@edit2 też trzeba użyć '&' gdy się do mapy? Skąd mam wiedzieć kiedy używać ampresandu a kiedy nie? Gdzie mogę o tym przeczytać?
http://cpp0x.pl/kursy/Kurs-C++/Poziom-3 /Przekazywanie-argumentow-funkcji-przez-referencje/356
P-39928
« 1 » 2
  Strona 1 z 2 Następna strona