Page 1 sur 2

Filtre de couleur

Publié : ven. 22/mai/2020 19:34
par MetalOS
Salut les gars, ca fessais un petit moment que je n'était pas venu par manque de temps. Je viens sollicité votre aide pour un logiciel que je développe. Je cherche à créer un masque de couleur rouge sur tous l'écran. Je suis en train de développer un logiciel pour l'astronomie et je cherche à faire comme un voile rouge sur tous l'écran pour avoir une sorte de vision nocturne pendant les observation astro pour ne pas être éblouie par l'éclairage de l'écran. Seulement j'ai beau chercher sur le forum anglais et Français je ne trouve rien. Quelqu'un aurait une idée ? Merci d'avance pour votre aide.

Re: Filtre de couleur

Publié : ven. 22/mai/2020 21:41
par venom
Salut MetalOS,

Bon j'avoue que ce code est totalement écrit a l'arrache :lol: Iil y a beaucoup mieux que ça.
Mais je pense que tu cherche ce genre d'effet :

Code : Tout sélectionner

  If OpenWindow(0, 0, 0, 245, 100, "ImageGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)

   LoadImage(1, GetCurrentDirectory()+"Examples\Sources\Data\PureBasic.bmp") 
   
    If CreateImage(2, 168, 35, 32, RGB(255, 0, 0)) And StartDrawing(ImageOutput(2))
     DrawAlphaImage(ImageID(1), 0, 0, 100) ; <<-- valeur a changer de 0 a 255
    EndIf
  
     ImageGadget(2,  10, 10, 168, 35, ImageID(2)) 
   
  Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
  EndIf
Ps: modifier la valeur en ligne 6 pour plus ou moins de transparence.






@++

Re: Filtre de couleur

Publié : ven. 22/mai/2020 22:01
par MetalOS
Je vais essayer mais ca y ressemble. Merci venom je posterais une capture une fois fini.

Re: Filtre de couleur

Publié : ven. 22/mai/2020 22:04
par MetalOS
Je suis allé un peut vite mais ca ne color qu'une image. Il n'est pas possible de colorer tous l'écran complet ?

Re: Filtre de couleur

Publié : ven. 22/mai/2020 22:16
par MetalOS
Voila ce que je voudrais obtenir

Image

Re: Filtre de couleur

Publié : ven. 22/mai/2020 22:28
par MetalOS
A moins de colorer tous les gadget, mais sont t'ils tous colorable ?

Re: Filtre de couleur

Publié : sam. 23/mai/2020 9:20
par MLD
Bonjour MetalOS

Moi je te propose ceci

Code : Tout sélectionner

Enumeration
#Ma_fen
EndEnumeration


OpenWindow(#Ma_fen,0,0,1920,1080,"Ma Fenêtre",#PB_Window_BorderLess|#NUL)
SetWindowColor(#Ma_fen,$00FF)
SetWindowLongPtr_(WindowID(#Ma_fen),#GWL_EXSTYLE,#WS_EX_LAYERED)
SetLayeredWindowAttributes_(WindowID(#Ma_fen),0,173,#LWA_ALPHA);transparence
;Vos gadgets ici
;
;
Repeat
  Event = WaitWindowEvent()
  If Event = #WM_LBUTTONDOWN
    SendMessage_(WindowID(#Ma_fen), #WM_NCLBUTTONDOWN, #HTCAPTION, 0);pour bouger la fenêtre
  EndIf
   If Event = #PB_Event_Gadget
    Select EventGadget()
 
    EndSelect
  EndIf
ForEver
End
Avec la souris tu peu faire bouger la fenêtre filtre. Ou dans ton code tu l'arrête.
Tu change la transparence de 0 a 255.
Bon courage
a+

Re: Filtre de couleur

Publié : sam. 23/mai/2020 12:34
par Ar-S
Salut.
Je n'ai pas piger si tu cherches à masque tout le programme ou N gadget en laissant un d'ouvert.
- Dans le 1er cas pourquoi n'utilises tu pas simplement hidewindow() ?
- Dans le second cas ou si tu veux que ta fenêtre s'assombrisse à un moment T, tu mets un fond noir (ou rouge ou autre) dans le fond de te fenêtre et tu mets tous tes gadgets dans un container.
Ainsi tu as juste à cacher ce container lors que tu souhaites avoir de l'obscurité et optionnellement tu maximises la fenêtre.

Re: Filtre de couleur

Publié : sam. 23/mai/2020 16:57
par venom
Je pense que MetalOS souhaite afficher un rectangle rouge devant toute sa fenêtre (comme si on posé un calque rouge sur l'écran) avec plus ou moins de transparence.

Comme c'est pour l'astronomie, je suppose que c'est pour faire un effet de "luminosité réduite".






@++

Re: Filtre de couleur

Publié : sam. 23/mai/2020 21:53
par MetalOS
Oui Venom c'est exactement ça que je voudrais faire mais tout en continuant d'utiliser mon logiciel. A moins de réussir à coloré en rouge tout les gadgets. Mais ça va être compliqué car certains gadget ne ce color pas ou juste une partie.

Re: Filtre de couleur

Publié : dim. 24/mai/2020 0:34
par Ar-S
Tu peux mettre un screenshot de ton interface. ?
Quels gadgets souhaites tu colorer ?

Re: Filtre de couleur

Publié : dim. 24/mai/2020 8:17
par MLD
Je ne comprend pas bien.
Avec le code que je te donne tu n'est pas obliger de filtrer tout l'écran. Tu peu choisir une partie de ta fenêtre, et laisser les boutons de commande de ton logiciel libre.
Dans la boucle général il faut utiliser une boucle pour deux fenêtres,ce qui te permettras l'orsque tu seras en dehors de la fenêtre filtre, d'utilisé les commandes de ton logiciel normalement.

Re: Filtre de couleur

Publié : dim. 24/mai/2020 9:33
par vurvur
@MetalOS: Je pense comprendre ce que tu demandes. Ceci devrait faire ton bonheur

Code : Tout sélectionner

OpenWindow(0, 0, 0, 320, 200, "", #PB_Window_BorderLess|#PB_Window_Maximize) : SetWindowColor(0, #red)

SetWindowLongPtr_(WindowID(0), #GWL_EXSTYLE, GetWindowLongPtr_(WindowID(0), #GWL_EXSTYLE)|#WS_EX_LAYERED|#WS_EX_TRANSPARENT)
SetLayeredWindowAttributes_(WindowID(0), 0, 90, #LWA_ALPHA)

StickyWindow(0, 1)

While WaitWindowEvent() <> #PB_Event_CloseWindow : Wend
(L'application peut être fermée par clic droit via la barre des tâches de windows)

Re: Filtre de couleur

Publié : dim. 24/mai/2020 9:47
par Ar-S
C'est un peu pour ça que je pense que créer une interface appropriée plutôt que de jouer avec un fenêtre semi transparente à gérer, qui n'empêchera certains gadgets d'être "claire" serait plus propre et plus efficace. Mais c'est sur, ça demande à repenser le soft.
Ve ce que l'on peut faire avec les Canvas, je m'orienterai dans cette direction.

Re: Filtre de couleur

Publié : dim. 24/mai/2020 10:02
par MLD
@vuvur
c'est a peu de choses prés le même code que le mien :roll: :lol: