Mélangeur Alpha

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

Mélangeur Alpha

Message par kernadec »

bonjour
j'avais commencer une boite de couleurs avec l'alpha, j'aurais bien voulu la finir..
pour la mettre dans un de mes codes.
mais je rencontre un problème avec la fonction alpha(couleur), Elle me renvoie rien?

Cordialement

voila mon code

Code : Tout sélectionner

;#############################################
;###  Kernadec le 02/2010 PB441             ##
;###  Mélangeur RGBA                        ##
;#############################################
Enumeration
#fenetre
#TrackBarGadget1:#TrackBarGadget2:#TrackBarGadget3:#TrackBarGadget4
#StringGadget1:#StringGadget2:#StringGadget3:#StringGadget4:#StringGadget5
#StringGadget6:#StringGadget7:#StringGadget8:#StringGadget9
#OptionGadget1:#OptionGadget2:#OptionGadget3:#OptionGadget4:#OptionGadget5
#Image1:#Image2:#Image3:#Image4:#Image5:#Image6:#Image7:#Image8::#Image9
EndEnumeration

If OpenWindow(#fenetre,0,0,306,454,"Mélangeur RGBA",#PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget) 
     TrackBarGadget(#TrackBarGadget1,4,3,265,20,0,255) 
     StringGadget(#StringGadget1,270,1,24,20,"0",#PB_String_ReadOnly) 
     TrackBarGadget(#TrackBarGadget2,4,25,265,20,0,255) 
     StringGadget(#StringGadget2,270,26,24,20,"0",#PB_String_ReadOnly) 
     TrackBarGadget(#TrackBarGadget3,4,47,265,20,0,255) 
     StringGadget(#StringGadget3,270,48,24,20,"0",#PB_String_ReadOnly) 
     TrackBarGadget(#TrackBarGadget4,4,69,265,20,0,255) 
     StringGadget(#StringGadget4,270,70,24,20,"0",#PB_String_ReadOnly) 
     StringGadget(#StringGadget5,2,120,96,20,"Couleur: ",#PB_String_ReadOnly)
     StringGadget(#StringGadget6,100,120,49,20,"R= ",#PB_String_ReadOnly)
     StringGadget(#StringGadget7,151,120,49,20,"V= ",#PB_String_ReadOnly)
     StringGadget(#StringGadget8,202,120,49,20,"B= ",#PB_String_ReadOnly)
     StringGadget(#StringGadget9,252,120,49,20,"A= ",#PB_String_ReadOnly)
     
     OptionGadget(#OptionGadget1,28,95,60,20,"ROUGE")
     OptionGadget(#OptionGadget2,104,95,60,20,"VERT")
     OptionGadget(#OptionGadget3,178,95,60,20,"BLEU")
     OptionGadget(#OptionGadget4,252,95,60,20,"FOND")
     CreateImage(#Image1,18,18,32) 
     CreateImage(#Image2,18,18,32)
     CreateImage(#Image3,18,18,32)
     CreateImage(#Image4,18,18,32)
     CreateImage(#Image5,243,5)
     CreateImage(#Image6,243,5)
     CreateImage(#Image7,243,5)
     CreateImage(#Image8,243,5)
     CreateImage(#Image9,306,453,32)
EndIf 
        ;couleur a l'ouverture de la boite
         StartDrawing(ImageOutput(#Image1)) 
         DrawingMode(#PB_2DDrawing_AlphaBlend)
         Rouge1=255:Vert1=0:Bleu1=0:Alpha1=255 
         Box(0,0,18,18,RGBA(Rouge1,Vert1,Bleu1,Alpha1))  
         StopDrawing()
         StartDrawing(ImageOutput(#Image2)) 
         DrawingMode(#PB_2DDrawing_AlphaBlend)
         Rouge2=0:Vert2=255:Bleu2=0:Alpha2=255
         Box(0,0,18,18,RGBA(Rouge2,Vert2,Bleu2,Alpha2)) 
         StopDrawing()
         StartDrawing(ImageOutput(#Image3))
         DrawingMode(#PB_2DDrawing_AlphaBlend)
         Rouge3=0:Vert3=0:Bleu3=255:Alpha3=255
         Box(0,0,18,18,RGBA(Rouge3,Vert3,Bleu3,Alpha3)) 
         StopDrawing() 
         StartDrawing(ImageOutput(#Image4))
         DrawingMode(#PB_2DDrawing_AlphaBlend)
         Rouge4=0:Vert4=0:Bleu4=0:Alpha4=255
         Box(0,0,18,18,RGBA(Rouge4,Vert4,Bleu4,Alpha4)) 
         StopDrawing() 
         StartDrawing(ImageOutput(#Image9))
         DrawingMode(#PB_2DDrawing_AlphaBlend)
         Rouge4=0:Vert4=0:Bleu4=0:Alpha4=0
         Box(0,0,306,306,RGBA(Rouge4,Vert4,Bleu4,Alpha4))
         Rouge4=255:Vert4=255:Bleu4=255:Alpha4=255
          Circle(153,153,150,RGBA(Rouge4,Vert4,Bleu4,Alpha4))
 	        Circle(153,98,95,RGBA(Rouge1,Vert1,Bleu1,Alpha1))
 	        Circle(105,180,95,RGBA(Rouge2,Vert2,Bleu2,Alpha2))
 	        Circle(201,181,95,RGBA(Rouge3,Vert3,Bleu3,Alpha3))
         StopDrawing() 
         ; couleur sous les curseurs
         StartDrawing(ImageOutput(#Image5))
         Rouge5=255:Vert5=0:Bleu5=0
         Box(0,0,243,5,RGB(Rouge5,Vert5,Bleu5)) 
         StopDrawing() 
         StartDrawing(ImageOutput(#Image6))
         Rouge6=0:Vert6=255:Bleu6=0
         Box(0,0,243,5,RGB(Rouge6,Vert6,Bleu6)) 
         StopDrawing() 
         StartDrawing(ImageOutput(#Image7))
         Rouge7=0:Vert7=0:Bleu7=255
         Box(0,0,243,5,RGB(Rouge7,Vert7,Bleu7)) 
         StopDrawing() 
         StartDrawing(ImageOutput(#Image8))
         Rouge8 =255:Vert8=255:Bleu8=255
         Box(0,0,243,5,RGB(Rouge8,Vert8,Bleu8)) 
         StopDrawing() 
     ; couleurs par defaut 
     SetGadgetState(#OptionGadget4,1)  
     SetGadgetState(#TrackBarGadget1,Rouge4):SetGadgetState(#TrackBarGadget2,vert4):SetGadgetState(#TrackBarGadget3,bleu4):SetGadgetState(#TrackBarGadget4,Alpha4)
     SetGadgetText(#StringGadget1,Str(Rouge4)):SetGadgetText(#StringGadget2,Str(Vert4)):SetGadgetText(#StringGadget3,Str(Bleu4)):SetGadgetText(#StringGadget4,Str(Alpha4))
 
Repeat
    Event=WaitWindowEvent() 
          x=WindowMouseX(#fenetre)
          y=WindowMouseY(#fenetre)
          ; couleur des boxs
          StartDrawing(WindowOutput(#fenetre)) 
          DrawImage(ImageID(#Image1),6,95) 
          StopDrawing() 
          StartDrawing(WindowOutput(#fenetre))
          DrawImage(ImageID(#Image2),85,95) 
          StopDrawing() 
          StartDrawing(WindowOutput(#fenetre))
          DrawImage(ImageID(#Image3),156,95) 
          StopDrawing()
          StartDrawing(WindowOutput(#fenetre)) 
          DrawImage(ImageID(#Image4),230,95) 
          StopDrawing()
          ; couleur sous les curseurs
          StartDrawing(WindowOutput(#fenetre)) 
          DrawImage(ImageID(#Image5),15,18) 
          StopDrawing() 
          StartDrawing(WindowOutput(#fenetre)) 
          DrawImage(ImageID(#Image6),15,40) 
          StopDrawing() 
          StartDrawing(WindowOutput(#fenetre)) 
          DrawImage(ImageID(#Image7),15,62) 
          StopDrawing() 
          StartDrawing(WindowOutput(#fenetre)) 
          DrawImage(ImageID(#Image8),15,84) 
          StopDrawing() 
          StartDrawing(WindowOutput(#fenetre)) 
          DrawingMode(#PB_2DDrawing_AlphaBlend)
          DrawImage(ImageID(#Image9),0,150) 
          StopDrawing() 
    If Event=#PB_Event_Gadget 
       Select EventMenu() 
         Case #OptionGadget1
             SetGadgetState(#TrackBarGadget1,Rouge1):SetGadgetState(#TrackBarGadget2,vert1):SetGadgetState(#TrackBarGadget3,bleu1):SetGadgetState(#TrackBarGadget4,Alpha1)
             SetGadgetText(#StringGadget1,Str(Rouge1)):SetGadgetText(#StringGadget2,Str(Vert1)):SetGadgetText(#StringGadget3,Str(Bleu1)):SetGadgetText(#StringGadget4,Str(Alpha1))
         Case #OptionGadget2
             SetGadgetState(#TrackBarGadget1,Rouge2):SetGadgetState(#TrackBarGadget2,vert2):SetGadgetState(#TrackBarGadget3,bleu2):SetGadgetState(#TrackBarGadget4,Alpha2)
             SetGadgetText(#StringGadget1,Str(Rouge2)):SetGadgetText(#StringGadget2,Str(Vert2)):SetGadgetText(#StringGadget3,Str(Bleu2)):SetGadgetText(#StringGadget4,Str(Alpha2))
         Case #OptionGadget3
             SetGadgetState(#TrackBarGadget1,Rouge3):SetGadgetState(#TrackBarGadget2,vert3):SetGadgetState(#TrackBarGadget3,bleu3):SetGadgetState(#TrackBarGadget4,Alpha3)
             SetGadgetText(#StringGadget1,Str(Rouge3)):SetGadgetText(#StringGadget2,Str(Vert3)):SetGadgetText(#StringGadget3,Str(Bleu3)):SetGadgetText(#StringGadget4,Str(Alpha3))
         Case #OptionGadget4
             SetGadgetState(#TrackBarGadget1,Rouge4):SetGadgetState(#TrackBarGadget2,vert4):SetGadgetState(#TrackBarGadget3,bleu4):SetGadgetState(#TrackBarGadget4,Alpha4)
             SetGadgetText(#StringGadget1,Str(Rouge4)):SetGadgetText(#StringGadget2,Str(vert4)):SetGadgetText(#StringGadget3,Str(bleu4)):SetGadgetText(#StringGadget4,Str(Alpha4))
         Case #TrackBarGadget1 
             Rouge = GetGadgetState(#TrackBarGadget1) 
             SetGadgetText(#StringGadget1,Str(Rouge))
           If GetGadgetState(#OptionGadget1)=1
             Rouge1=Rouge
           EndIf
           If GetGadgetState(#OptionGadget2)=1
             Rouge2=Rouge
           EndIf
           If GetGadgetState(#OptionGadget3)=1
             Rouge3=Rouge
           EndIf
           If GetGadgetState(#OptionGadget4)=1
             Rouge4=Rouge
           EndIf
         Case #TrackBarGadget2 
             Vert = GetGadgetState(#TrackBarGadget2) 
             SetGadgetText(#StringGadget2,Str(Vert)) 
           If GetGadgetState(#OptionGadget1)=1
             vert1=vert
           EndIf
           If GetGadgetState(#OptionGadget2)=1
             vert2=vert
           EndIf
           If GetGadgetState(#OptionGadget3)=1
             vert3=vert
           EndIf
           If GetGadgetState(#OptionGadget4)=1
             vert4=vert
           EndIf
         Case #TrackBarGadget3
             Bleu = GetGadgetState(#TrackBarGadget3) 
             SetGadgetText(#StringGadget3,Str(Bleu)) 
           If GetGadgetState(#OptionGadget1)=1
             bleu1=bleu
           EndIf
           If GetGadgetState(#OptionGadget2)=1
             bleu2=bleu
           EndIf
           If GetGadgetState(#OptionGadget3)=1
             bleu3=bleu
           EndIf
           If GetGadgetState(#OptionGadget4)=1
             bleu4=bleu
           EndIf
          Case #TrackBarGadget4 
             Alpha = GetGadgetState(#TrackBarGadget4) 
             SetGadgetText(#StringGadget4,Str(Alpha)) 
           If GetGadgetState(#OptionGadget1)=1
             Alpha1=Alpha
           EndIf
           If GetGadgetState(#OptionGadget2)=1
             Alpha2=Alpha
           EndIf
           If GetGadgetState(#OptionGadget3)=1
             Alpha3=Alpha
           EndIf
           If GetGadgetState(#OptionGadget4)=1
             Alpha4=Alpha
           EndIf
         EndSelect 
      If GetGadgetState(#OptionGadget1)=1
          StartDrawing(ImageOutput(#Image1))
          DrawingMode(#PB_2DDrawing_AlphaBlend) 
          Box(0,0,60,20,RGBA(Rouge1,Vert1,Bleu1,Alpha1))
          StopDrawing() 
          StartDrawing(ImageOutput(#Image9))
          DrawingMode(#PB_2DDrawing_AlphaBlend)
           Circle(153,153,150,RGBA(Rouge4,Vert4,Bleu4,Alpha4))
           Circle(201,181,95,RGBA(Rouge3,Vert3,Bleu3,Alpha3))
           Circle(105,180,95,RGBA(Rouge2,Vert2,Bleu2,Alpha2))
            Circle(153,98,95,RGBA(Rouge1,Vert1,Bleu1,Alpha1))
          StopDrawing()
      EndIf
      If GetGadgetState(#OptionGadget2)=1
          StartDrawing(ImageOutput(#Image2))
          DrawingMode(#PB_2DDrawing_AlphaBlend) 
          Box(0,0,60,20,RGBA(Rouge2,Vert2,Bleu2,Alpha2)) 
          StopDrawing()
          StartDrawing(ImageOutput(#Image9))
          DrawingMode(#PB_2DDrawing_AlphaBlend)
           Circle(153,153,150,RGBA(Rouge4,Vert4,Bleu4,Alpha4))
           Circle(201,181,95,RGBA(Rouge3,Vert3,Bleu3,Alpha3))
           Circle(153,98,95,RGBA(Rouge1,Vert1,Bleu1,Alpha1))
           Circle(105,180,95,RGBA(Rouge2,Vert2,Bleu2,Alpha2))
          StopDrawing() 
      EndIf
      If GetGadgetState(#OptionGadget3)=1
          StartDrawing(ImageOutput(#Image3)) 
          DrawingMode(#PB_2DDrawing_AlphaBlend)
          Box(0,0,60,20,RGBA(Rouge3,Vert3,Bleu3,Alpha3)) 
          StopDrawing()
          StartDrawing(ImageOutput(#Image9))
          DrawingMode(#PB_2DDrawing_AlphaBlend)
           Circle(153,153,150,RGBA(Rouge4,Vert4,Bleu4,Alpha4))
           Circle(153,98,95,RGBA(Rouge1,Vert1,Bleu1,Alpha1))
           Circle(105,180,95,RGBA(Rouge2,Vert2,Bleu2,Alpha2))
           Circle(201,181,95,RGBA(Rouge3,Vert3,Bleu3,Alpha3))
          StopDrawing() 
      EndIf
      If GetGadgetState(#OptionGadget4)=1
          StartDrawing(ImageOutput(#Image4)) 
          DrawingMode(#PB_2DDrawing_AlphaBlend)
            Box(0,0,60,20,RGBA(Rouge4,Vert4,Bleu4,Alpha4)) 
          StopDrawing() 
          StartDrawing(ImageOutput(#Image9))
          DrawingMode(#PB_2DDrawing_AlphaBlend)
            Circle(153,153,150,RGBA(Rouge4,Vert4,Bleu4,Alpha4))
            Circle(201,181,95,RGBA(Rouge3,Vert3,Bleu3,Alpha3))
            Circle(105,180,95,RGBA(Rouge2,Vert2,Bleu2,Alpha2))
            Circle(153,98,95,RGBA(Rouge1,Vert1,Bleu1,Alpha1))
          StopDrawing()
      EndIf
    EndIf 
    If GetAsyncKeyState_(#VK_LBUTTON)
        StartDrawing(ImageOutput(#Image9))
          DrawingMode(#PB_2DDrawing_AlphaBlend)
          If x=>0 And y=>150:Couleur.l=Point(x,y-150):EndIf
         StopDrawing() 
           SetGadgetText(#StringGadget5,"Couleur: "+Str(Couleur))
           SetGadgetText(#StringGadget6,"R="+Str(Red(Couleur)))
           SetGadgetText(#StringGadget7,"G="+Str(Green(Couleur)))
           SetGadgetText(#StringGadget8,"B="+Str(Blue(Couleur)))
           SetGadgetText(#StringGadget9,"A="+Str(Alpha(Couleur)))
    EndIf	
Until Event=#PB_Event_CloseWindow
Dernière modification par kernadec le lun. 22/févr./2010 21:05, modifié 1 fois.
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: Mélangeur Alpha

Message par Le Soldat Inconnu »

Tes images sont en 24 bits donc sans couches alpha :)

Il faut faire des images 32 bits
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

Re: Mélangeur Alpha

Message par kernadec »

bonsoir Soldat Inconnu
merci, de ta réponse le CreateImage en 32bits m'avait échappé Oops....
voila j' ai corrigé 2 3 ptit probl.. dans le code précédent, maintenant il reste a 255?
ca devient merdeux comme mon code, cette histoire.

cordialement
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

Re: Mélangeur Alpha

Message par kernadec »

bonjour
dans l'exemple ci-dessous la valeur de la couleur donnée par alpha() est toujours 255
par contre les valeurs RGB sont modifiées, quelle en est la règle?.
pour le moment, Je n'y comprend rien.

je viens de compléter le test, La fonction POINT() et GetPixel_()
donnent des valeurs différentes de celle donnée par RGBA ?

Cordialement

Code : Tout sélectionner

Enumeration
#fenetre1
#fenetre2
#image1
#image2
#image3
#ImageGadget1
#ImageGadget2
EndEnumeration
OpenWindow(#fenetre1, 200,200, 200, 200, "fenetre couleur RGBA",#WS_SYSMENU)
CreateImage(#image1,200,200,32)
CreateImage(#image2,200,200,32)
  dc=StartDrawing(ImageOutput(#image1)) 
   DrawingMode(#PB_2DDrawing_AlphaBlend)
  
    Box(0,0,200,200,RGBA(0,200,0,140))
     
    couleur.i=Point(100,100)   ;couleur point()
    
    Debug "Lecture avec point() en RGBA"
    Debug "R:"+Str(Red(couleur))
    Debug "G:"+Str(Green(couleur))
    Debug "B:"+Str(Blue(couleur))
    Debug "A:"+Str(Alpha(couleur))
    
    couleur.i=GetPixel_(dc,100,100)
    Debug "Lecture avec GetPixel() en RGBA"
    Debug "R:"+Str(Red(couleur))
    Debug "G:"+Str(Green(couleur))
    Debug "B:"+Str(Blue(couleur))
    Debug "A:"+Str(Alpha(couleur))
        
    Debug " "
    Debug "compare les valeurs"
    Debug "RGBA(): "+Str(RGBA(0,200,0,140))
    Debug "Point(): "+Str(Point(100,100))
    Debug "GetPixel(): "+Str(GetPixel_(dc,100,100))
    Debug " "
  StopDrawing()  
	ImageGadget(#ImageGadget1,0,0,200,200,ImageID(#image1))
	SetGadgetState(#ImageGadget1,ImageID(#image1))
  
  StartDrawing(ImageOutput(#image2))
    DrawingMode(#PB_2DDrawing_AlphaBlend)
    DrawImage(ImageID(#image1),0,0 ) 
    
     couleur.i=Point(100,100)   ;couleur point()
    Debug "Lecture du point() en RGBA"
    Debug "R:"+Str(Red(couleur))
    Debug "G:"+Str(Green(couleur))
    Debug "B:"+Str(Blue(couleur))
    Debug "A:"+Str(Alpha(couleur))
  
  StopDrawing()
  
  
OpenWindow(#fenetre2, 500,200, 200, 200, "fenetre couleur RGB",#WS_SYSMENU)
CreateImage(#image3,200,200)
  StartDrawing(ImageOutput(#image3)) 
    Box(0,0,200,200,RGB(0,200,0))

    couleur.i=Point(100,100)   ;couleur point()
    Debug "Lecture de point() en RGB"
    Debug "R:"+Str(Red(couleur))
    Debug "G:"+Str(Green(couleur))
    Debug "B:"+Str(Blue(couleur))


  StopDrawing()  
	ImageGadget(#ImageGadget2,0,0,200,200,ImageID(#image3))
	SetGadgetState(#ImageGadget2,ImageID(#image3))

    couleur=RGBA(0,200,0,140)
    Debug "Lecture avec RGBA(0,200,0,140)"
    Debug "R:"+Str(Red(couleur))
    Debug "G:"+Str(Green(couleur))
    Debug "B:"+Str(Blue(couleur))
    Debug "A:"+Str(Alpha(couleur))
Repeat: Until WindowEvent() = #PB_Event_CloseWindow
Répondre