Comment changer la Teinte Globale d'une image...

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Comment changer la Teinte Globale d'une image...

Message par Shadow »

Salut,

J'aimerais savoir comment ont fait pour changer la Teinte Globale d'une image, je sais pas si je suis clair donc voilà se que je veux faire avec PB:
http://www.aht.li/3060923/bandicam_2017 ... 46-144.avi
Dernière modification par Shadow le jeu. 04/mai/2017 22:18, modifié 3 fois.
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Comment changer la Teinte Globale d'une image...

Message par Ar-S »

Tout dépend de comment tu crées et comment tu affiches ton image..
Si tu veux de la modif en temps réel comme sur ta video, je te conseils de faire 3 TrackBarGadget()
Une pour le R une pour le G une pour le B... Que tu initialises de 0 à 255
Quand tu bouges un des curseurs tu modifies l'affichage de ton bouton en directe..

Il y a surement plein d'exemples sur le forum.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: Comment changer la Teinte Globale d'une image...

Message par Shadow »

Salut,

Je ne veux pas faire un logiciel, je veux une procédure qui change les couleurs :)
Merci quand même.
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Comment changer la Teinte Globale d'une image...

Message par Ar-S »

Sérieux... Tu peux pas être moins précis?
Tout dépend de comment tu comptes colorer tes boutons...
Si tu les dessines dans un canvas ou pas, dans un screen ? etc...
Dans TOUS les cas tu changes les valeurs RGB... Je vois pas le soucis.

Exemple à l'arrache pour modifier la valeur du rouge..

Code : Tout sélectionner


Enumeration GUI
  #LDVM
  #CANVAS
  #T_RED
EndEnumeration

Lwin = 350 : Hwin = 100
Global Canvas_MAX_L = Lwin - 101
Global Canvas_MAX_H = Hwin

; ********************* PROGRAMME ********************** 


hwnd = OpenWindow(#LDVM, #PB_Any, #PB_Any, Lwin, Hwin, "by Ar-S // 2017", #PB_Window_MinimizeGadget|#PB_Window_TitleBar|#PB_Window_ScreenCentered)

CanvasGadget(#CANVAS, 101, 1,  Canvas_MAX_L, Canvas_MAX_H , #PB_Canvas_DrawFocus|#PB_Canvas_ClipMouse)
StartDrawing(CanvasOutput(#CANVAS))
DrawingMode(#PB_2DDrawing_AlphaBlend)
Box(0,0, Canvas_MAX_L, Canvas_MAX_H, $FFFFFF)
DrawingMode(#PB_2DDrawing_Transparent)
DrawText(5,5, "Vide", $0)
StopDrawing()


TrackBarGadget(#T_RED, 1, 20, 100, 25, 0, 255) ;
; Position trackBar Couleurs
SetGadgetState(#T_RED, 200) ; on initialise à 200 le rouge

; initialisation du 1er affichage
RED_VAL.i = GetGadgetState(#T_RED)
StartDrawing(CanvasOutput(#CANVAS))
Box(0,0,Canvas_MAX_L,Canvas_MAX_H,$0)
DrawText(5,5, "VARIANTE ROUGE", RGB(RED_VAL,0,0) )
StopDrawing()

; ************ EVENT et BOUCLE ********************** 

Repeat
  
  Select WaitWindowEvent()
      
    Case #PB_Event_Gadget
      
      Select EventGadget()
          
       
        Case #T_RED ;- SI on bouge la trackbar, on change la variante rouge
          RED_VAL.i = GetGadgetState(#T_RED)
          StartDrawing(CanvasOutput(#CANVAS))
          Box(0,0,Canvas_MAX_L,Canvas_MAX_H,$0)
          DrawText(5,5, "VARIANTE ROUGE", RGB(RED_VAL,0,0) )
          StopDrawing()
          
      EndSelect            
      
    Case #PB_Event_CloseWindow
      Select EventWindow()
        Case #LDVM
          quite=1
      EndSelect
      
      
  EndSelect
  
  
Until quite=1






~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Comment changer la Teinte Globale d'une image...

Message par falsam »

Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: Comment changer la Teinte Globale d'une image...

Message par Shadow »

Merci Ar'S,

Oui, sur une image :)

Merci Falsam.
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Comment changer la Teinte Globale d'une image...

Message par falsam »

Il y a des choses interessantes dans ce post de BasicallyPure sur le forum anglophone.

:arrow: http://forum.purebasic.com/english/view ... 2a#p482309

J'ai pris une partie de son code pour teinter une image.

■ Objectif.
- Choisir une image.
- Sélectionner la couleur de teinture.
- Teinter l'image.
- Afficher le résultat.

Code : Tout sélectionner

EnableExplicit

;Plan de l'application
Declare Start()
Declare TintImage(Image, Color)
Declare Exit()

Start()

Procedure Start()
  Protected FileName.s, Image, Color = RGB(169, 169, 169)
  
  UseJPEGImageDecoder()
  UsePNGImageDecoder()
  
  OpenWindow(0, 0, 0, 800, 600, "Test", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  ImageGadget(0, 0, 0, 800, 600, 0)  
  
  ;Choisir une image 
  FileName = OpenFileRequester("Choisir une image", "", "", 0)
  
  If FileName
    Image = LoadImage(-1, FileName)
    
    If image
      ;Choisir la couleur de teinte
      Color = ColorRequester()
    EndIf
    
    TintImage(Image, Color)
    SetGadgetState(0, ImageID(Image))
  EndIf   
  
  ;Triggers
  BindEvent(#PB_Event_CloseWindow, @Exit())
  
  Repeat : WaitWindowEvent() : ForEver
EndProcedure

Procedure TintImage(Image, Color)
  Protected c, i, x, y, width, height
  Protected.d r, g, b
  
  r = Red(color)   / 1785
  g = Green(color) / 1785
  b = Blue(color)  / 1785
  
  If IsImage(Image)
    
    StartDrawing(ImageOutput(Image))
    width = OutputWidth()  - 1
    height = OutputHeight() - 1
    
    For y = 0 To height
      For x = 0 To width
        c = Point(x, y)
        
        i = (c & $FF) << 1 : c >> 8
        i + (C & $FF) << 2 : c >> 8
        i + (c & $FF)      : c >> 8
        
        Plot(x, y, RGBA(r*i, g*i, b*i, c))
      Next x
    Next y
    StopDrawing()
  EndIf 
EndProcedure

Procedure Exit()  
  End
EndProcedure
C'est pas mal :wink:
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: Comment changer la Teinte Globale d'une image...

Message par Shadow »

Ah oui pas mal du tout même !
Merci Falsam :)
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: [Résolu] Comment changer la Teinte Globale d'une image..

Message par Shadow »

Hum, en faite ça ne me conviens pas :?
Je voudrait comme sur ma vidéo...
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Comment changer la Teinte Globale d'une image...

Message par Ar-S »

Comme d'habitude tu captures les pixels dans un tableau et tu modifier leur couleur..
Tu as tout ce qu'il te faut sur le forum même des sujets où tu étais présent. Procédure tabpixel ou un truc comme ça que j'ai posté plusieurs fois.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: [Résolu] Comment changer la Teinte Globale d'une image..

Message par falsam »

Shadow a écrit :Hum, en faite ça ne me conviens pas :?
Je voudrait comme sur ma vidéo...
mais quel raleur celui là. En fait tu veux une solution clé en main :mrgreen:
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Comment changer la Teinte Globale d'une image...

Message par falsam »

Et bien voila une solution qui ne demande qu'à être fignoler.

Code : Tout sélectionner

EnableExplicit

Global Image

;Plan de l'application
Declare Start()
Declare CButton(w, h, text.s, BackColor, Color)
Declare OnChange()
Declare ColorTint(Color, Scale.f) 
Declare Exit()

Start()

Procedure Start()  
  OpenWindow(0, 0, 0, 800, 600, "Création d'un bouton", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  
  FrameGadget(-1, 20, 20, 380, 200, "Avant") 
  ImageGadget(0, 40, 40, 0, 0, 0)
  
  FrameGadget(-1, 405, 20, 380, 200, "Aprés") 
  ImageGadget(1, 425, 40, 0, 0, 0)
  
  TrackBarGadget(2, 196, 250, 400, 26, 0, 200)
  SetGadgetState(2, 100)
  TextGadget(3, 196, 280, 400, 22, "", #PB_Text_Center)
  
  ;Triggers
  BindGadgetEvent(2, @OnChange())
  BindEvent(#PB_Event_CloseWindow, @Exit())
  
  Image = CButton(120, 30, "Mon button", RGB(255, 215, 0), RGB(255, 255, 255))
  SetGadgetState(0, ImageID(Image))
  OnChange()
  
  Repeat : WaitWindowEvent() : ForEver
EndProcedure

;Création d'un bouton
Procedure CButton(w, h, text.s, BackColor, Color)
  Protected tw, th
  Protected Image = CreateImage(-1, w, h, 32, RGB(169, 169, 169))
  
  StartDrawing(ImageOutput(Image))
    DrawingMode(#PB_2DDrawing_Gradient)
    FrontColor(Color)
    BackColor(BackColor)
    LinearGradient(w/2, 0, w/2, h)
    RoundBox(0, 0, w, h, 4, 4)
  
    DrawingMode(#PB_2DDrawing_Outlined)
    RoundBox(0, 0, w, h, 4, 4, RGB(0, 0, 0))
    DrawingMode(#PB_2DDrawing_Transparent)
    tw = TextWidth(text)
    th = TextHeight(text)
    If tw < w And th < h
      DrawText((w-tw)/2, (h-th)/2, text, RGB(255, 0, 0))
    EndIf
  StopDrawing()
  ProcedureReturn Image  
EndProcedure

;La valeur du trackbar a changé
Procedure OnChange()
  Protected Scale.f = GetGadgetState(2)/100 - 1
  Protected c, x, y, width, height
  Protected ImageResult
  
  SetGadgetText(3, StrF(Scale))
  
  CopyImage(Image, ImageResult)
  
  StartDrawing(ImageOutput(ImageResult))
  width = OutputWidth()  - 1
  height = OutputHeight() - 1
  
  For y = 0 To height
    For x = 0 To width
      c = Point(x, y)
      ColorTint(c, Scale)        
      Plot(x, y, ColorTint(c, Scale))
    Next x
  Next y
  StopDrawing()
  
  SetGadgetState(1, ImageID(ImageResult))
EndProcedure

; Changer la teinte d'une couleur (Echelle comprise entre -1 et 1)
Procedure ColorTint(Color, Scale.f) 
  Protected Red, Green, Blue
  
  Red = Red(Color)
  Green = Green(Color)
  Blue = Blue(Color)
  
  If Scale > 0
    Red = Red * (1 - Scale) + Blue * Scale
    Green = Green * (1 - Scale) + Red * Scale
    Blue = Blue * (1 - Scale) + Green * Scale
  Else
    Red = Red * (1 + Scale) - Green * Scale
    Green = Green * (1 + Scale) - Blue * Scale
    Blue = Blue * (1 + Scale) - Red * Scale
  EndIf
   
  ProcedureReturn RGB(Red, Green, Blue) 
EndProcedure

Procedure Exit()  
  End
EndProcedure
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: Comment changer la Teinte Globale d'une image...

Message par Shadow »

Jolie Falsam, merci ! :D
Par contre les couleurs s’assombrisse c'est normale ?
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
Guillot
Messages : 673
Inscription : jeu. 25/juin/2015 16:18

Re: Comment changer la Teinte Globale d'une image...

Message par Guillot »

salut,

ma contribution :
j'ai fais quelques fonction de gestion des couleurs
en ce qui te concerne, sur la droite y'a 3 petits avions coloré de différentes manieres : blend, add, sub (il manque l’addition signée)

note :en déplaçant le scrollbar vertical a droite tu change la composante teinte

Code : Tout sélectionner

Procedure limite(v,min=0,max=255)
  If v<min:v=min:EndIf
  If v>max:v=max:EndIf
  ProcedureReturn v
EndProcedure

Global Dim l255.a(256*3-1):For i=0 To 255:l255(i+256)=i:l255(i+512)=255:Next

Procedure ColorBlend(color1.l, color2.l, blend.f=0.5)
  Protected r.w,g.w,b.w,a.w
  r=  Red(color1) + (Red(color2)     - Red(color1)) * blend
  g=Green(color1) + (Green(color2) - Green(color1)) * blend
  b= Blue(color1) + (Blue(color2) -   Blue(color1)) * blend
  a=Alpha(color1) + (Alpha(color2) - Alpha(color1)) * blend
  ProcedureReturn  RGBA(r,g,b,a)
EndProcedure

Procedure ColorAdd(color1.l, color2.l, blend.f=1)
  Protected r.w,g.w,b.w,a.w
  r=  Red(color1) +   Red(color1) * blend
  g=Green(color1) + Green(color1) * blend
  b= Blue(color1) +  Blue(color1) * blend
  a=Alpha(color1) + Alpha(color1) * blend
  ProcedureReturn  RGBA(l255(r+256),l255(g+256),l255(b+256),l255(a+256))
EndProcedure

Procedure ColorSub(color1.l, color2.l, blend.f=1)
  Protected r.w,g.w,b.w,a.w
  r=  Red(color1) -   Red(color1) * blend
  g=Green(color1) - Green(color1) * blend
  b= Blue(color1) -  Blue(color1) * blend
  a=Alpha(color1) - Alpha(color1) * blend
  ProcedureReturn  RGBA(l255(r+256),l255(g+256),l255(b+256),l255(a+256))
EndProcedure


Procedure DrawingFilter_add(X, Y, cs.l, cd.l)
  ProcedureReturn RGBA(l255(Red(cd)+Red(cs)+256),l255(Green(cd)+Green(cs)+256),l255(Blue(cd)+Blue(cs)+256),l255(Alpha(cd)+Alpha(cs)+256))
  ;ProcedureReturn RGBA(limite(Red(cd)+Red(cs)),limite(Green(cd)+Green(cs)),limite(Blue(cd)+Blue(cs)),limite(Alpha(cd)+Alpha(cs)))
EndProcedure

Procedure DrawingFilter_sub(X, Y, cs, cd)
  ProcedureReturn RGBA(l255(Red(cd)-Red(cs)+256),l255(Green(cd)-Green(cs)+256),l255(Blue(cd)-Blue(cs)+256),l255(Alpha(cd)-Alpha(cs)+256))
  ;ProcedureReturn RGBA(limite(Red(cd)-Red(cs)),limite(Green(cd)-Green(cs)),limite(Blue(cd)-Blue(cs)),limite(Alpha(cd)-Alpha(cs)))
EndProcedure

Procedure.l HSLToRGB(hue.a, saturation.a, lightness.a, alpha=0)
  Protected.f h=hue *6/256
  Protected.f s=saturation/255
  Protected.f l=lightness/255
  Protected.f c,x,r_,v_,b_,m
  c=(1-Abs(2*l-1))*s
  x=c*(1-Abs(Mod(h, 2) -1))
  Select Int(h)
    Case 0:r_=c:v_=x
    Case 1:r_=x:v_=c
    Case 2:v_=c:b_=x
    Case 3:v_=x:b_=c
    Case 4:r_=x:b_=c
    Case 5:r_=c:b_=x
  EndSelect
  m=l-c/2
  Protected r,v,b
  r=Int((r_+m)*255)
  v=Int((v_+m)*255)
  b=Int((b_+m)*255)
  ProcedureReturn RGBA(r,v,b,alpha)
EndProcedure

Procedure.l RGBToHSL(red.a, green.a, blue.a, alpha=0)
  Protected.f r=red/255
  Protected.f g=green/255
  Protected.f b=blue/255
  Protected.f cmax, cmin, h_,c,m,h,s,l
  Protected.l imax,imin
  If r>=g And r>=b:imax=1:cmax=r:EndIf
  If g>=r And g>=b:imax=2:cmax=g:EndIf
  If b>=r And b>=g:imax=3:cmax=b:EndIf
  If r<=g And r<=b:imin=1:cmin=r:EndIf
  If g<=r And g<=b:imin=2:cmin=g:EndIf
  If b<=r And b<=g:imin=3:cmin=b:EndIf
  c=cmax-cmin
  Select imax
    Case 1:h_=Mod((g-b)/c+6,6)
    Case 2:h_=(b-r)/c+2
    Case 3:h_=(r-g)/c+4
  EndSelect
  h=h_/6
  l=(cmax+cmin)/2
  If l<>1:s=c/(1-Abs(2*l-1)):Else:s=0:EndIf
  ProcedureReturn RGBA(h*255,s*255,l *255,alpha)  
EndProcedure

; ==================================== exemple ====================================

Procedure affiche_exemple()
  StartDrawing(CanvasOutput(0))
  
  ;--------------------- palette HSL
  Box(0, 0, 512, 512, $888888)
  For j=0 To 255
    For i = 0 To 255
      Plot(i,j, HSLToRGB(i,j,128))
    Next
  Next
  
  ;--------------------- spheres
  DrawingMode(#PB_2DDrawing_Gradient)
  Macro sphere
    ResetGradientColors()
    GradientColor(0.0,HSLToRGB(h,64,200))
    GradientColor(0.3,HSLToRGB(h,64,128))
    GradientColor(1.0,HSLToRGB(h,64,64))
    CircularGradient(x-r*0.3, y+r*1.2+r*0.5,r)    
    Circle(x,y+r*1.2,r)
    
    ResetGradientColors()
    GradientColor(0.0,HSLToRGB(h,255,255))
    GradientColor(0.3,HSLToRGB(h,255,128))
    GradientColor(1.0,HSLToRGB(h,255,64))
    CircularGradient(x-r*0.3, y-r*0.3,r)    
    Circle(x,y,r)
  EndMacro
  
  For j=1 To 4
    n=1<<j
    For i=0 To n-1
      h=(0.5+i)/n*256
      r=50/Sqr(n)
      r=120/n
      x=256+h
      y=16*(i & 1)+330-420/Sqr(n)
      sphere
    Next
  Next
  
  ;--------------------- filtres blend, add, sub
  
  DrawImage(ImageID(0), 0, 256, 512, 256)
  
  For j=0 To 2
    Select j
      Case 0:dm.s="Blend":DrawingMode(#PB_2DDrawing_Gradient |#PB_2DDrawing_AlphaBlend)
      Case 1:dm.s="Add"  :DrawingMode(#PB_2DDrawing_Gradient |#PB_2DDrawing_CustomFilter):CustomFilterCallback(@ DrawingFilter_add())
      Case 2:dm.s="Sub"  :DrawingMode(#PB_2DDrawing_Gradient |#PB_2DDrawing_CustomFilter):CustomFilterCallback(@ DrawingFilter_sub())
    EndSelect
    For i=0 To 2
      x=64+(512-128)*j/2 
      y=64+256+64*i
      ResetGradientColors()
      GradientColor(0,$ff000000 |$88<<(i*8))
      GradientColor(1,$ff000000)
      CircularGradient(x,y,64)
      Circle(x,y,64)        
    Next
    DrawingMode(#PB_2DDrawing_Transparent)
    DrawText(x,256,dm)
  Next
  StopDrawing() 
EndProcedure

Procedure affiche_geebee()
  hue=GetGadgetState(1)
  StartDrawing(CanvasOutput(0))
  For i=0 To 2
    DrawingMode(#PB_2DDrawing_Default )
    DrawImage(ImageID(1),512,i*128)
    Select i
      Case 0:dm.s="Blend":DrawingMode(#PB_2DDrawing_AlphaBlend)
      Case 1:dm.s="Add"  :DrawingMode(#PB_2DDrawing_CustomFilter):CustomFilterCallback(@ DrawingFilter_add())
      Case 2:dm.s="Sub"  :DrawingMode(#PB_2DDrawing_CustomFilter):CustomFilterCallback(@ DrawingFilter_sub())
    EndSelect
    Box(512,i*128,128,128,HSLToRGB(hue,255,127,127))
    DrawingMode(#PB_2DDrawing_Transparent)
    DrawText(512,i*128,dm)
  Next
  StopDrawing()
EndProcedure

OpenWindow(0, 0, 0, 512+128+16, 512, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CanvasGadget(0, 0, 0, 512+128, 512)
ScrollBarGadget(1,512+128,0,16,512,0,255,1,#PB_ScrollBar_Vertical)
BindGadgetEvent(1,@ affiche_geebee())
UseJPEGImageDecoder()
LoadImage(0, #PB_Compiler_Home + "Examples/3D/Data/Textures/dirt.jpg")
LoadImage(1, #PB_Compiler_Home + "Examples/3D/Data/Textures/geebee2.bmp")

affiche_exemple()
affiche_geebee()

Repeat:Until WaitWindowEvent() = #PB_Event_CloseWindow

Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: Comment changer la Teinte Globale d'une image...

Message par Shadow »

Merci beaucoup Guillot :)
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Répondre