Forum de la communauté SFML

Aide => Fenêtrage => Discussion démarrée par: chiotdauchan le Juillet 16, 2013, 09:44:15 pm

Titre: Splash art transparent
Posté par: chiotdauchan le Juillet 16, 2013, 09:44:15 pm
Bonjour,

j'aimerais réaliser un splash art transparent à la manière de photoshop (voir screenshot)

(http://imageshack.us/a/img832/5497/xfwr.jpg)

On voit qu'il y'a de la transparence permettant de voir le fond en dessous.
J'aimerais savoir s'il c'était possible de réaliser cela en SFML, j'ai essayé de le faire en appliquant un masque de transparence mais les zones sensées être transparente sont noires (surement à cause du window.clear() ).

Voici mon code:
#include <SFML/Graphics.hpp>
#include "SplashArt.hpp"

SplashArt::SplashArt(int largeur, int hauteur, int temps)
{
        this->hauteur = hauteur;
        this->largeur = largeur ;
        this->temps = temps;
}

int SplashArt::show()
{
    sf::RenderWindow splash(sf::VideoMode(largeur, hauteur), "Chargement", sf::Style::None);
    sf::Image image;
    sf::Texture texture;
    sf::Sprite sprite;
    image.loadFromFile("images/splashart2.png");
    image.createMaskFromColor(sf::Color(255,238,95),0);
    texture.loadFromImage(image);
    texture.setSmooth(false);
    sprite.setTexture(texture);

    sf::Font font_splash;
    if (!font_splash.loadFromFile("polices/Organic Fridays.ttf"))
        return EXIT_FAILURE;
    sf::Text text_splash("Chargement", font_splash, 50);
    while (splash.isOpen())
    {
        sf::Event event_splash;
        while (splash.pollEvent(event_splash))
        {
            if (event_splash.type == sf::Event::Closed)
                splash.close();
        }
        splash.clear();
        splash.draw(sprite);
        splash.draw(text_splash);
        splash.display();
        _sleep((temps*1000));
        splash.close();
    }
}
Titre: Re : Splash art transparent
Posté par: G. le Juillet 17, 2013, 12:38:12 am
Y'a eu plusieurs sujets à ce sujet, comme ces deux là :
http://en.sfml-dev.org/forums/index.php?topic=9184.msg62098#msg62098
http://en.sfml-dev.org/forums/index.php?topic=7820.msg52219#msg52219

En gros, impossible avec juste les fonctions de la SFML. Mais tu peux y arriver quand même en appelant des fonctions spécifiques à chaque OS. (je ne sais pas lesquelles :p )
Titre: Re : Splash art transparent
Posté par: chiotdauchan le Juillet 17, 2013, 12:53:46 am
Merci de ta réponse, tu veux dire des fonctions de l'API Windows?
Titre: Re : Splash art transparent
Posté par: gostron le Juillet 25, 2013, 05:16:44 pm
Pour Windows oui. J'imagine que le rapide serait d'utiliser des frameworks qui permettent de le faire comme Qt par exemple qui te propose cette fonctionnalite pour les principaux OS en tout cas.