Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Texture.update() ne donne pas le résultat attendu  (Lu 596 fois)

0 Membres et 1 Invité sur ce sujet

Steeling

  • Newbie
  • *
  • Messages: 3
    • Voir le profil
Texture.update() ne donne pas le résultat attendu
« le: Février 05, 2023, 11:58:58 pm »
Bonjour à tous,

J'essaie de faire un code tout simple (pour débuter) : j'affiche une image puis, après avoir cliqué dessus, le pixel cliqué se colore en bleu.

Malheureusement, j'ai beau cliquer, rien ne change. Il ne se passe absolument rien et je ne sais pas du tout pourquoi. J'ai eu beau afficher les valeurs des pixels dans la console avant et après, je vois qu'ils sont bien modifiés mais l'affichage ne le rend pas en compte. Je me suis donc demandé si le problème ne venait pas de mon utilisation de la fonction update. J'ai épluché la documentation mais je ne vois pas ce que je fais de mal.

Quelqu'un aurait-il une idée ?  ;D
Merci par avance pour tout conseil !

Ci-dessous, mon code :

sf::Image fill_shape(int x, int y, sf::Image img){

    sf::Image new_image = img;
    new_image.setPixel(x, y, BLUE);
    return new_image;
}

int main()
{
    // Load an image file from a file
    sf::Texture texture;
    if (!texture.loadFromFile("image.jpg")){
        return EXIT_FAILURE;
    }
    sf::Sprite sprite(texture);

    int x = sprite.getTexture()->getSize().x * sprite.getScale().x;
    int y = sprite.getTexture()->getSize().y * sprite.getScale().y;
    sf::RenderWindow window(sf::VideoMode(x, y), "Image Filler");

    while (window.isOpen())
    {
        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed){
                window.close();
            }
            else if (sf::Mouse::isButtonPressed(sf::Mouse::Left))
            {
                sf::Vector2i position = sf::Mouse::getPosition();
                int x = position.x;
                int y = position.y;
                sf::Image image = sprite.getTexture()->copyToImage();
                sf::Image new_image = fill_shape(x, y, image);
                texture.update(new_image);
                sprite.setTexture(texture);
            }
        }

        window.clear();
        window.draw(sprite);
        window.display();
    }

    return 0;
}

sabitas53

  • Newbie
  • *
  • Messages: 1
    • Voir le profil
Re: Texture.update() ne donne pas le résultat attendu
« Réponse #1 le: Décembre 19, 2023, 05:29:28 am »
Citer
J'essaie de faire un code tout simple (pour débuter) : j'affiche une image puis, après avoir cliqué dessus, le pixel cliqué se colore en bleu. geometry dash subzero
    }
    sf::Sprite sprite(texture);

    int x = sprite.getTexture()->getSize().x * sprite.getScale().x;
    int y = sprite.getTexture()->getSize().y * sprite.getScale().y;
    sf::RenderWindow window(sf::VideoMode(x, y), "Image Filler");

    while (window.isOpen())
    {
     
 

J'ai essayé et ça ne marche pas ! Y a-t-il une erreur dans ce paragraphe ou quelque chose comme ça ?

 

anything