OpenWindowedScreen en 32 bits de profondeur ?
- DjPoke
- Messages : 121
- Inscription : mar. 02/nov./2010 13:53
- Localisation : Corte, Corse, France
- Contact :
OpenWindowedScreen en 32 bits de profondeur ?
Bonjour à tous
Je voudrais savoir s'il existe une astuce pour ouvrir un écran dans une fenêtre, gérant la transparence Alpha.
Le but étant de pouvoir effacer l'écran avec une teinte Alpha égale à zéro, ou au moins une partie.
Il me semble avoir vu que cela est possible en plein écran, mais en mode fenêtré, je n'y arrive pas.
Je voudrais savoir s'il existe une astuce pour ouvrir un écran dans une fenêtre, gérant la transparence Alpha.
Le but étant de pouvoir effacer l'écran avec une teinte Alpha égale à zéro, ou au moins une partie.
Il me semble avoir vu que cela est possible en plein écran, mais en mode fenêtré, je n'y arrive pas.
- DjPoke
- Messages : 121
- Inscription : mar. 02/nov./2010 13:53
- Localisation : Corte, Corse, France
- Contact :
Re: OpenWindowedScreen en 32 bits de profondeur ?
C'est exactement ce que j'ai utilisé. (voir le titre...)
Mais le problème, c'est que l'écran ouvert dans la fenêtre n'est pas en 32 bits puisque je ne peux pas le remplir avec la couleur RGBA(0, 0, 0 ,0), par exemple.
Il ne prend pas en compte l'Alpha.
Une idée ?
Mais le problème, c'est que l'écran ouvert dans la fenêtre n'est pas en 32 bits puisque je ne peux pas le remplir avec la couleur RGBA(0, 0, 0 ,0), par exemple.
Il ne prend pas en compte l'Alpha.
Une idée ?
Re: OpenWindowedScreen en 32 bits de profondeur ?
tu peux dessiner sur une image et afficher l'image sur ton écran ensuite
Code : Tout sélectionner
InitSprite()
Enumeration
#main=42 ; HG2G
#pic
EndEnumeration
OpenWindow(#main,0,0,800,600,"test")
OpenWindowedScreen(WindowID(#main),0,0,800,600)
CreateImage(#pic,800,600,32,0)
StartDrawing(ImageOutput(#pic))
DrawText(10,10,"ceci est un test",$ffffff,$000000)
DrawingMode(#PB_2DDrawing_AlphaBlend) ; <---------------- ne fonctionne que sur un canvas ou une image
Box(0,0,800,600,RGBA(255,255,255,50))
StopDrawing()
StartDrawing(ScreenOutput())
DrawImage(ImageID(#pic),0,0)
StopDrawing()
FlipBuffers()
Repeat
ev=WaitWindowEvent()
Until ev=#PB_Event_CloseWindow
Dernière modification par case le sam. 08/juil./2017 19:27, modifié 1 fois.
Re: OpenWindowedScreen en 32 bits de profondeur ?
en tout cas en direct, ça ne marche pas
et pourtant ça devrai en principe !
dans cet exemple le deuxieme box devrait etre de plus en plus opaque ...
hors, il est opaque sans modification .....
du coup on ne vois pas le premier box
et ceux malgres le Drawingmode(#PB_2DDrawing_AlphaBlend )
et pourtant ça devrai en principe !
dans cet exemple le deuxieme box devrait etre de plus en plus opaque ...
hors, il est opaque sans modification .....
du coup on ne vois pas le premier box
et ceux malgres le Drawingmode(#PB_2DDrawing_AlphaBlend )
Code : Tout sélectionner
#window = 0
#Width = 600
#Height = 600
Enumeration
#Panel
#Cont
#Button
EndEnumeration
;- Initialisation de DirectX
If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0
MessageRequester("Erreur", "Impossible d'initialiser DirectX", 0)
CloseWindow(#window) : End
EndIf
;- Ouverture de la fenêtre et de l'écran
hwnd = OpenWindow(#window, 0, 0, #Width, #Height, "",#PB_Window_TitleBar | #PB_Window_ScreenCentered|#PB_Window_SystemMenu )
OpenWindowedScreen(hwnd , 0, 0, #Width,#Height, 0, 0, 0)
;- début de la boucle
pas=1:alpha2=1
Repeat
ExamineMouse() ; on demande a purebasic de surveiller les event de souris !
ExamineKeyboard() ; on demande a purebasic de surveiller les event de clavier!
evnt= WindowEvent()
Delay(2)
Select evnt
Case #PB_Event_CloseWindow
End
EndSelect
alpha2=alpha2+pas
if alpha2>255 or alpha2<0
pas=-pas
Endif
StartDrawing(ScreenOutput())
DrawText(10, 10, "touche ESC pour quitter" ,RGB(255,255,0),RGB(0,0,0))
Drawingmode(#PB_2DDrawing_AlphaBlend )
Box(10,100,32,32,rgb(255,0,0))
Box(10,100,320,200,rgba(255,255,0,Alpha2)) ; <<<<<<<<<<<<ne marche pas !!!
StopDrawing()
FlipBuffers() :ClearScreen($0)
Until KeyboardPushed(#PB_Key_Escape)
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Re: OpenWindowedScreen en 32 bits de profondeur ?
DrawingMode(#PB_2DDrawing_AlphaBlend) ; <---------------- ne fonctionne que sur un canvas ou une image
voir la doc
voir la doc
Note: Les modes suivants ne fonctionnent qu'avec ImageOutput() et CanvasOutput(). Ils sont ignorés pour toutes les autres sorties:
#PB_2DDrawing_AlphaBlend
/snip/
#PB_2DDrawing_AlphaChannel
/snip/
#PB_2DDrawing_AllChannels
/snip/
#PB_2DDrawing_Gradient
/snip/
#PB_2DDrawing_CustomFilter
/snip/
Re: OpenWindowedScreen en 32 bits de profondeur ?
ben non , c'est pas ecris dans la doc
a la fonction c'est ecrit :
hors, que je sache, le fait de dessiner sur l'ecran c'est quand meme la base du dessin non ?
a moins qu'il y ai une difference avec Directx , mais pourtant, ça marche bien avec les Sprites
cette affaire de transparence , il me semble que c'etait meme la grande nouveauté de la Version 4.00 de Purebasic
[reedit apres avoir lu ton complement de message]
ha oui, c'est ecrit au milieu effectivement ....
c'est quand meme tres "limitatoire "
a la fonction c'est ecrit :
Syntaxe
DrawingMode(Mode)
Description
Change le mode d'affichage pour les textes et les dessins.
hors, que je sache, le fait de dessiner sur l'ecran c'est quand meme la base du dessin non ?
a moins qu'il y ai une difference avec Directx , mais pourtant, ça marche bien avec les Sprites
cette affaire de transparence , il me semble que c'etait meme la grande nouveauté de la Version 4.00 de Purebasic
[reedit apres avoir lu ton complement de message]
ha oui, c'est ecrit au milieu effectivement ....
c'est quand meme tres "limitatoire "
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Re: OpenWindowedScreen en 32 bits de profondeur ?
lis plus bas dans la partie arguments
j'ai pas inventer mes copier coller de la doc
edit :
oui bon ben on vas pas y passer la nuit a se quoter ^^
j'ai pas inventer mes copier coller de la doc
edit :
oui bon ben on vas pas y passer la nuit a se quoter ^^
Dernière modification par case le sam. 08/juil./2017 19:40, modifié 3 fois.
Re: OpenWindowedScreen en 32 bits de profondeur ?
Zorro a écrit :
[reedit apres avoir lu ton complement de message]
ha oui, c'est ecrit au milieu effectivement ....
c'est quand meme tres "limitatoire "
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"