Dark Temat założony przez niniejszego użytkownika |
[SFML, C++] Wczytywanie i zapisywanie plików » 2011-08-02 22:57:48 Gdzie trzeba wrzucić plik obrazu aby można go było wczytać? Mam problem też z zapisywaniem po prostu nie chce zapisać się do pliku zrzut ekranu. |
|
akwes |
» 2011-08-02 22:59:05 Do folderu z plikami .cpp i .h jeżeli podajesz ścieżkę względną, a jak bezwzględną to obojętne... |
|
DejaVu |
» 2011-08-03 00:12:53 W kursie masz przykład odczytu i zapisu bitmap. Kurs SFML 1.6, C++. W kursie anglojęzycznym jest opisane jak zrobić zrzut ekranu (w tym moim chyba też, choć nie pamiętam tego na chwilę obecną i trzeba po prostu sprawdzić). Plik się zapewne zapisuje w katalogu w którym jest tworzony plik EXE, a jeżeli nie to w katalogu roboczym. Jeżeli plik się nie zapisał na dysku to metoda zwróci Ci wartość false - wówczas miejsce do którego chcesz zapisać nie istnieje bądź nie masz uprawnień do zapisywania pliku na danym nośniku (mało prawdopodobne). |
|
Dark Temat założony przez niniejszego użytkownika |
» 2011-08-03 10:49:39 Gdy chcę uruchomić aplikację wyskakuje mi
Unhandled exception at 0x69ff112e (msvcp100.dll) in Project A.exe: 0xC0000005: Access violation reading location 0x00366000.
a kod aplikacji to
#include <SFML/Graphics.hpp> #include <SFML/Window.hpp>
int main() { sf::RenderWindow oknoAplikacji( sf::VideoMode( 800, 600, 32 ), "Crion" ); sf::Shape Ksztalt; sf::Sprite sprajt; sf::Image image; image.LoadFromFile( "ludek.png" ); sprajt.SetImage( image ); sprajt.SetPosition( 500, 100 ); sprajt.SetScale( 10, 6 ); while( oknoAplikacji.IsOpened() ) { sf::Event zdarzenie; while( oknoAplikacji.GetEvent( zdarzenie ) ) { if( zdarzenie.Type == sf::Event::Closed ) oknoAplikacji.Close(); if( zdarzenie.Type == sf::Event::KeyPressed && zdarzenie.Key.Code == sf::Key::Escape ) oknoAplikacji.Close(); if( zdarzenie.Type == sf::Event::KeyPressed && zdarzenie.Key.Code == sf::Key::F1 ) { sf::Image zrzut = oknoAplikacji.Capture(); zrzut.SaveToFile( "f.bmp" ); } } oknoAplikacji.Clear( sf::Color::Green ); Ksztalt.AddPoint( 100, 100, sf::Color::Blue, sf::Color::Red ); Ksztalt.AddPoint( 100, 200, sf::Color::Blue, sf::Color::Green ); Ksztalt.AddPoint( 200, 200, sf::Color::Blue, sf::Color::Cyan ); Ksztalt.EnableFill( true ); Ksztalt.EnableOutline( true ); Ksztalt.SetOutlineWidth( 4 ); oknoAplikacji.Draw( Ksztalt ); oknoAplikacji.Draw( sprajt ); oknoAplikacji.Display(); } return 0; } |
|
madmike44 |
» 2011-08-03 11:33:25 U mnie (Win XP Pro SP3, Code::Blocks, MinGW, SFML 1.6) Twój kod działa bez problemu. Patrząc po tym DLL-u, używasz IDE/kompilatora Microsoftu i błąd jest powodowany przez jakiś nieobsłużony wyjątek - Visual zgłasza naruszenie zasad dostępu do jakiegoś miejsca w pamięci.. Z tego wszystkiego wniosek, że problem nie leży raczej w Twoim kodzie..
P.S. Kompilacja przebiega bez najmniejszych problemów ?
(Przyjąłem w ciemno, że plik ludek.png istnieje, jest umieszczony w poprawnym folderze oraz masz uprawnienia do zapisu w katalogu z programem.) |
|
Dark Temat założony przez niniejszego użytkownika |
» 2011-08-03 11:41:32 Plik z obrazem jest umieszczony w folderze razem z plikiem w którym jest kod, więc powinien się wczytywać bez problemu. |
|
madmike44 |
» 2011-08-03 11:47:20 Wczyta się bez problemu, jeśli uruchamiasz aplikację bezpośrednio z poziomu IDE. Normalnie, wg Twojego kodu, plik powinien znajdować się w katalogu z plikiem wykonywalnym (jeśli jest inny, niż katalog zawierający kod źródłowy). |
|
Dark Temat założony przez niniejszego użytkownika |
» 2011-08-03 11:53:25 Wrzuciłem obraz tam gdzie mam plik .exe i wyrzuca tym razem ten sam błąd i zaznacza w bibliotece streambuf linijkę:
overflow( _Traits::to_int_type( * _Ptr ) ) ) )
Ta biblioteka jakoś niebardzo jest podpasowana pod visuala 2010, chyba przerzucę się na opengl :) |
|
« 1 » 2 3 4 |