IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Rendre transparent une partie d'une image avec PyGame


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Fonctionnaire
    Inscrit en
    Novembre 2017
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fonctionnaire

    Informations forums :
    Inscription : Novembre 2017
    Messages : 20
    Par défaut Rendre transparent une partie d'une image avec PyGame
    Bonjour à tous,

    J'ai une surface A totalement opaque que je voudrais bliter sur une surface B, plus petite et totalement transparente... mais je voudrais qu'une partie de la surface B demeure transparente (un partie non rectangulaire malheureusement). Je réfléchis au moyen de faire ça mais j'aimerais avoir votre avis, surtout qu'il y a peut-être une façon beaucoup plus simple de le faire.

    En gros :
    - soit il y a un moyen de de limiter le blit à une partie seulement de la surface B, mais je ne vois pas comment (d'autant plus qu'elle n'est pas rectangulaire) ;
    - soit je blit comme si de rien n'était et ensuite je transforme chaque pixel de la zone à garder transparente en pixel transparent, avec surfarray.pixels2d()

    Est-ce que ça vous semble une bonne façon de procéder ? Vous voyez un moyen plus simple ? Je précise que le temps de calcul n'est pas trop un souci, car c'est une opération qui ne sera faite qu'une seule fois, au lancement.

    merci à tous !

  2. #2
    Membre très actif

    Homme Profil pro
    Bidouilleur
    Inscrit en
    Avril 2016
    Messages
    721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2016
    Messages : 721
    Billets dans le blog
    1
    Par défaut
    Salut.

    Ce que je ne comprends pas dans ta description est de vouloir blit l'image opaque sur l'image transparente, pourquoi ne pas faire l'inverse ? Ce qui serait le plus logique, et avec le blit tu peux très bien définir la partie de l'image A à afficher.

  3. #3
    Membre averti
    Homme Profil pro
    Fonctionnaire
    Inscrit en
    Novembre 2017
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fonctionnaire

    Informations forums :
    Inscription : Novembre 2017
    Messages : 20
    Par défaut
    Merci pour ta réponse.

    Je ne vois pas trop comment faire ce que tu proposes. Enfin, je vois comment blit la surface B sur la surface A, mais je ne vois pas comment définir la partie de la surface A à blit ? Surtout que partie sera un rectangle, duquel il faudra enlever des zones triangulaires.

  4. #4
    Membre très actif

    Homme Profil pro
    Bidouilleur
    Inscrit en
    Avril 2016
    Messages
    721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2016
    Messages : 721
    Billets dans le blog
    1
    Par défaut
    En utilisant le 3ème paramètre de blit pour définir quelle partie de l'image à afficher, un rectangle donc.

    Surface.blit(source, dest, area=None, special_flags = 0): return Rect
    Après, tu peux très bien partir d'une surface vierge, et apposer tes parties d'images dessus.

  5. #5
    Membre averti
    Homme Profil pro
    Fonctionnaire
    Inscrit en
    Novembre 2017
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fonctionnaire

    Informations forums :
    Inscription : Novembre 2017
    Messages : 20
    Par défaut
    Mais je ne vois pas comment faire ça, dans la mesure où la zone à blit n'est pas rectangulaire, mais composée de plusieurs triangles

  6. #6
    Membre très actif

    Homme Profil pro
    Bidouilleur
    Inscrit en
    Avril 2016
    Messages
    721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2016
    Messages : 721
    Billets dans le blog
    1
    Par défaut
    Hum, c'est sans doute clair pour toi, mais pour moi, non.

    Après si tu arrives à récupérer ces triangles de l'image en utilisant surfarray, bah alors il n'y a aucun problème

Discussions similaires

  1. Copier une partie d'une form dans une image
    Par Duan dans le forum Débuter
    Réponses: 5
    Dernier message: 11/05/2009, 16h16
  2. Réponses: 2
    Dernier message: 10/03/2009, 12h45
  3. donner une couleur a une partie d'une forme
    Par ralf91 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 04/04/2008, 17h02
  4. Sélectionner seulement une partie d'une valeur d'une cellule
    Par ArthurO0O dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 20/08/2007, 11h05
  5. masquer une partie d'une vidéo par une banniere
    Par lezabour dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 16/10/2006, 16h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo