[2D drawing] des cercles (pour brush 2D ou autres)

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

[2D drawing] des cercles (pour brush 2D ou autres)

Message par blendman »

salut

voici un petit code très simple, qui permet de tester les dégradé et la création de cercles particuliers.
J'ai utilisé ça sur mon logiciel Animatoon, pour le Module de Brush :

Code : Tout sélectionner

Enumeration ; gadget
  #Gadget_image
  #Gadget_GradientX
  #Gadget_GradientX2
  #Gadget_GradientX3
  #Gadget_Radius  
EndEnumeration

Global gradientX.d=0.1, gradientX2.d=0.1, radius.w = 800,gradientX3.d = 0.5

Macro Update()
  If StartDrawing(ImageOutput(0))
    Box(0, 0, 400, 200, $FFFFFF)    
    DrawingMode(#PB_2DDrawing_Gradient|#PB_2DDrawing_AlphaBlend)      
    ;BackColor(RGBA(0,0,0,255))      
    GradientColor(gradientX, 0)    
    GradientColor(gradientX3, RGBA(0,0,0,125))     
    GradientColor(gradientX2, RGBA(0,0,0,0))    
    ;FrontColor(RGBA(0,0,0,0))
    CircularGradient(100, 100, radius)     
    Box(0,0,200,200)    
    StopDrawing() 
  EndIf
  Debug gradientX2
EndMacro

If OpenWindow(0, 0, 0, 400, 200, "Brush Example", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  
  If CreateImage(0, 200, 200)
    Update()
    ImageGadget(#Gadget_image, 0, 0, 400, 200, ImageID(0))
  EndIf
  x = 30
  TrackBarGadget(#Gadget_GradientX,220,x,150,20,1,100)
  SetGadgetState(#Gadget_GradientX,gradientX *100)
  
  TrackBarGadget(#Gadget_GradientX2,220,x*2,150,20,1,100)
  SetGadgetState(#Gadget_GradientX2,gradientX2 *100) 
  
  TrackBarGadget(#Gadget_GradientX3,220,x*3,150,20,1,100)
  SetGadgetState(#Gadget_GradientX3,gradientX3 *100)
  
  TrackBarGadget(#Gadget_Radius,220,x*4,150,20,1,1000)
  SetGadgetState(#Gadget_Radius,radius)
  
  Repeat
    Event = WaitWindowEvent()
        
    Select event
        
      Case #PB_Event_Gadget
        
        Select EventGadget()
            
          Case #Gadget_GradientX
            gradientX= GetGadgetState(#Gadget_GradientX)/100
            update()
            SetGadgetState(#Gadget_image,ImageID(0))
            
          Case #Gadget_GradientX2
            gradientX2 = GetGadgetState(#Gadget_GradientX2)/100
            update()
            SetGadgetState(#Gadget_image,ImageID(0))
            
          Case #Gadget_GradientX3
            gradientX3 = GetGadgetState(#Gadget_GradientX3)/100
            update()
            SetGadgetState(#Gadget_image,ImageID(0)) 
            
          Case #Gadget_Radius
            radius = GetGadgetState(#Gadget_Radius)
            update()
            SetGadgetState(#Gadget_image,ImageID(0))
            
        EndSelect
        
    EndSelect
        
  Until Event = #PB_Event_CloseWindow
EndIf
Si vous faites des découvertes avec ça, n'hésitez pas à poster :)
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

Re: [2D drawing] des cercles (pour brush 2D ou autres)

Message par kernadec »

bonjour blendman

merci, magnifiques effets

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

Re: [2D drawing] des cercles (pour brush 2D ou autres)

Message par falsam »

Merci Blendman :)
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%
Répondre