Welcome, Guest. Please login or register. Did you miss your activation email?

Author Topic: [Résolu] Background transparent  (Read 6256 times)

0 Members and 1 Guest are viewing this topic.

nekko

  • Newbie
  • *
  • Posts: 6
    • View Profile
[Résolu] Background transparent
« on: June 28, 2013, 01:05:19 pm »
Bonjour à tous,

Découvrant SFML depuis peu, je voudrais savoir s'il était possible de rendre le background d'une fenêtre translucide, voire totalement transparent. J'ai fais quelques recherches (peut-être pas assez) à ce sujet, je n'ai cependant rien trouvé.

Merci pour votre aide.
« Last Edit: June 28, 2013, 05:01:25 pm by nekko »
- nekko

Laurent

  • Administrator
  • Hero Member
  • *****
  • Posts: 32498
    • View Profile
    • SFML's website
    • Email
Re : Background transparent
« Reply #1 on: June 28, 2013, 01:10:28 pm »
Pas directement avec SFML. Il faut que tu passes par des fonctions spécifiques de l'OS.
Laurent Gomila - SFML developer

nekko

  • Newbie
  • *
  • Posts: 6
    • View Profile
Re : Background transparent
« Reply #2 on: June 28, 2013, 01:40:35 pm »
De telles fonctions ne vont pas rendre TOUTE la fenêtre transparente? Je souhaiterais afficher des images par dessus ce background.
« Last Edit: June 28, 2013, 02:05:40 pm by nekko »
- nekko

Laurent

  • Administrator
  • Hero Member
  • *****
  • Posts: 32498
    • View Profile
    • SFML's website
    • Email
Re : Background transparent
« Reply #3 on: June 28, 2013, 01:47:28 pm »
En fait (sous Windows au moins) tu peux appliquer un masque et donc appliquer la transparence avec une forme quelconque. Je pense que tu peux aussi faire en sorte que ce soit le canal alpha de ce que tu dessines qui soit directement interprété comme valeur de transparence.
Laurent Gomila - SFML developer

nekko

  • Newbie
  • *
  • Posts: 6
    • View Profile
Re : Background transparent
« Reply #4 on: June 28, 2013, 02:33:44 pm »
J'ai trouvé un moyen de changer la transparence d'une fenêtre en utilisant un layer, mais je ne sais pas si c'est une bonne solution pour pouvoir afficher des images par dessus.

sf::RenderWindow window(sf::VideoMode(500, 500), "SFML_WINDOW", 0);

HWND hWnd = window.getSystemHandle();
SetWindowLong(hWnd, GWL_EXSTYLE, GetWindowLong(hWnd, GWL_EXSTYLE) | WS_EX_LAYERED);
SetLayeredWindowAttributes(hWnd, 0, 0, LWA_ALPHA);
- nekko

Laurent

  • Administrator
  • Hero Member
  • *****
  • Posts: 32498
    • View Profile
    • SFML's website
    • Email
Re : Background transparent
« Reply #5 on: June 28, 2013, 02:51:58 pm »
Et là ça donne quoi ? Tu vois quand même ce que tu affiches via SFML ou pas ?
Laurent Gomila - SFML developer

nekko

  • Newbie
  • *
  • Posts: 6
    • View Profile
Re : Background transparent
« Reply #6 on: June 28, 2013, 03:14:34 pm »
Non, pas du tout. Si je change un peu la transparence, sa donne ça.

- nekko

Laurent

  • Administrator
  • Hero Member
  • *****
  • Posts: 32498
    • View Profile
    • SFML's website
    • Email
Re : Background transparent
« Reply #7 on: June 28, 2013, 03:19:29 pm »
Ok. Et toi tu voudrais faire quoi en fait ?
Laurent Gomila - SFML developer

nekko

  • Newbie
  • *
  • Posts: 6
    • View Profile
Re : Background transparent
« Reply #8 on: June 28, 2013, 03:27:59 pm »
Quelque chose de ce genre là (avec le background invisible derrière):



Pour l'instant, la seul solution que je vois c'est d'utiliser plusieurs fenêtres différentes.
- nekko

Laurent

  • Administrator
  • Hero Member
  • *****
  • Posts: 32498
    • View Profile
    • SFML's website
    • Email
Re : Background transparent
« Reply #9 on: June 28, 2013, 03:59:02 pm »
Je pense qu'il y a moyen (en utilisant le canal alpha du rendu OpenGL), mais je ne sais pas exactement comment ça fonctionne.
Laurent Gomila - SFML developer

nekko

  • Newbie
  • *
  • Posts: 6
    • View Profile
Re : [Résolu] Background transparent
« Reply #10 on: June 28, 2013, 05:01:53 pm »
Je pense que je vais me résoudre à utiliser plusieurs fenêtres alors. Merci quand même.

PS: J'admire ton travail Laurant, faire une superbe librarie et être aussi actif sur le forum, anglais et français en plus, j'ai jamais vu ça :Q
- nekko