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

[SFML1.6]Obraz nie wyświetla się.

Ostatnio zmodyfikowano 2012-10-06 12:01
Autor Wiadomość
Admixior
Temat założony przez niniejszego użytkownika
[SFML1.6]Obraz nie wyświetla się.
» 2012-10-05 22:15:43
Witam.
Jak zwykle mam problem. Otóż ładuję obraz funkcją LoadFromMemory(...); Obraz ten jest w formacie jpg. Funkcja  zwraca true czyli poprawnie załadowany.
Później nie chce mi się wyświetlać na ekranie. Dla testów dałem zapis na dysk i działa dobrze.
C/C++
ekran.SetImage( active_bmpnr1 ? ekran_bmp2: ekran_bmp1 );
ekran.GetImage()->SaveToFile( "C:\\Users\\Admixior\\Desktop\\jpg.jpg" );
active_bmpnr1 =!active_bmpnr1;
gotowe = false;
//std::cout<<'\a';
}
wnd.Clear();
wnd.Draw( ekran );
wnd.Draw( menu );
wnd.Draw( info_user );
//wnd.Draw( proc_down );
wnd.Display();
P-66135
DejaVu
» 2012-10-05 23:52:12
C/C++
active_bmpnr1 =!active_bmpnr1;
Hm? Co to za kwiatek? Poza tym kod, który dałeś wygląda co najmniej dziwnie...

/edit:
Dodam jeszcze, że fragment kodu:
C/C++
}
Może być źródłem Twoich problemów (wiem, że brzmi to irracjonalnie, ale coś tak mi się wydaje, że zmienne ekran_bmp2 oraz ekran_bmp1 są zmiennymi lokalnymi, więc obraz idzie do piachu, bowiem nie jest on kopiowany do obiektu ekran).
P-66137
Admixior
Temat założony przez niniejszego użytkownika
» 2012-10-06 12:01:58
Właściwie są to zmienne globalne.

Ten kod dlatego jest taki dziwny bo pracuje na 2 threadach.
Raz do jednego sf::Image jest pakowany objekt a drugi wyświetlany, a później na odwrót.
Tak wygląda cały if
C/C++
if( gotowe ) //jeśli została pobrana
{
    if( c == 0x00 ) wnd.Close();
   
    ekran.SetImage( active_bmpnr1 ? ekran_bmp2: ekran_bmp1 );
    ekran.GetImage()->SaveToFile( "C:\\Users\\Admixior\\Desktop\\jpg.jpg" );
    active_bmpnr1 =!active_bmpnr1;
    gotowe = false;
    //std::cout<<'\a';
}

 active_bmpnr1 =!active_bmpnr1;
ta linijka jest informacją dla drugiego threada do którego ma ładować obraz (pokazuje który sf::image jest aktualnie używany.
W skrócie raz ładuje do jednego raz do drugiego.
//jeśli true to ekran_bmp1 jest aktualnie używane

//
Problem jest w tym że SubRect ustawione w sf::Sprite ekran jest kolejno (left,up,right bottom){0,0,1,1}
gdy zmieniłem right i bottom debuggerem to działa.
wie ktoś dlaczego jak zmieniam sobie obraz SetImage() to nie zmienia mi się wielkość obrazu???

Problem rozwiązany.
SubRect jest ustawiany na początku przy pierwszym "SetImage" później zostaje taki jaki był.
P-66149
« 1 »
  Strona 1 z 1