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

Ustawienie tła na okno sfml

Object Storage Arubacloud
+2 głosów
543 wizyt
pytanie zadane 10 stycznia 2021 w C i C++ przez Mefjuu Nowicjusz (220 p.)

Próbuję ustawić tło na okno ale cały czas program komunikuje że nie znalazł pliku tła pomimo dobrej lokalizacji

#include <SFML/Window.hpp>
#include <SFML/Graphics.hpp>
#include <SFML/Audio.hpp>
#include <iostream>
#include <vector>
//#include <filesystem>
using namespace std;
//using filesystem::directory_iterator;
int main() {

    //Properties
    setlocale(LC_ALL, "");
    sf::RenderWindow W(sf::VideoMode(800, 600, 32), "Battleship");
    W.setActive(true);
    W.setFramerateLimit(60);
    int horizontal = sf::VideoMode::getDesktopMode().width/2 - 400;
    int vertical = sf::VideoMode::getDesktopMode().height/2 - 300;
    W.setPosition(sf::Vector2i(horizontal, vertical));
    /*for (const auto& file : directory_iterator("./"))
        cout << file.path() << endl;*/
    //Background
    sf::Texture texture;
    string PATH = "./Background.png";
    if (!texture.loadFromFile(PATH))
    {
        cout << endl << "Nie znaleziono pliku tła!";
        system("pause");
    }
    sf::Sprite background;
    background.setTexture(texture);

    W.draw(background);
    //Main Loop
    while (W.isOpen()) {
        sf::Event Event;


        W.clear();
        W.draw(background);
        W.display();
    }

    system("pause");
}

 

komentarz 10 stycznia 2021 przez j23 Mędrzec (194,920 p.)
Jeśli odpalasz program z poziomu IDE, to niewykluczone, że katalog roboczy jest inny od tego, w którym leży exek (Code::Blocks tak miał/ma).
komentarz 10 stycznia 2021 przez solidereq Nowicjusz (140 p.)
ale w kodzie sprawdza który to katalog roboczy i w tym katalogu jest wklejony plik, poza tym program pisany jest w visual studio 2019
komentarz 10 stycznia 2021 przez j23 Mędrzec (194,920 p.)

Jak sprawdza? Nic tam nie ma.

Jeśli Background.png leży tam, gdzie jest exek (np. katalog Debug), a środowisko przed uruchomieniem aplikacji ustawi katalog roboczy na katalog projektu, to ścieżki względne nie będą działać. Nie pamiętam, jak sprawa wygląda w VC++, ale nie zdziwiłbym się, gdyby taka zmiana była robiona (ma to logiczne uzasadnienie).

komentarz 10 stycznia 2021 przez solidereq Nowicjusz (140 p.)
for (const auto& file : directory_iterator("./"))

        cout << file.path() << endl;

a to to chyba kwiatki maluje?
komentarz 10 stycznia 2021 przez j23 Mędrzec (194,920 p.)
Nie zwróciłem uwagi na ten zakomentowany fragment.

2 odpowiedzi

0 głosów
odpowiedź 10 stycznia 2021 przez edwardkraweznik Dyskutant (9,930 p.)

Witaj.

Być może problem leży w ścieżce do pliki.

string PATH = "./Background.png";

Jeśli plik .png znajduje się w tym samym katalogu co plik wykonywalny to powinno być:

std::string file = "nazwapliku.png";

katalog wyżej:

std::string file = "../nazwapliku.png";

0 głosów
odpowiedź 10 stycznia 2021 przez VBService Ekspert (253,420 p.)
edycja 10 stycznia 2021 przez VBService

Jeżeli plik graficzny znajduje się w tej samej lokacji co plik aplikacji (exe) wystarczy:

string PATH = "Background.png";

bez kropki i "slasza" wink

lub sprawdź czy nie masz "zdublowanych" rozszerzeń plików:

Podobne pytania

0 głosów
1 odpowiedź 463 wizyt
pytanie zadane 4 sierpnia 2020 w C i C++ przez NieMaJuzNazw Użytkownik (890 p.)
0 głosów
2 odpowiedzi 223 wizyt
pytanie zadane 24 sierpnia 2016 w C i C++ przez Maciek123233 Gaduła (3,400 p.)
0 głosów
2 odpowiedzi 1,284 wizyt
pytanie zadane 28 sierpnia 2015 w C i C++ przez arek01996 Stary wyjadacz (12,100 p.)

92,579 zapytań

141,432 odpowiedzi

319,664 komentarzy

61,964 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...