Un logiciel de dessin....

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Un logiciel de dessin....

Message par Oliv »

Ce weekend je n'avais rien à faire donc j'ai fait comme Dobro : un logiciel aussi inutile qu'indispensable, il faut choisir deux couleurs pour le fond, une pour les pints et amusez vous

Code : Tout sélectionner

; Initialisations
If InitSprite() = 0
  MessageRequester("Erreur","Le DirectX 7 ne peut pas être initilaisé.",#MB_ICONERROR) : End
EndIf

;- Declarations
; Constantes
Enumeration 
  #Taille_Reelle
  #Lancer
  #Taille
  #Enregistrer
  #Quitter
EndEnumeration

; Structures
Structure RGB
  R.l
  G.l
  B.l
EndStructure

; Listes

; Buffer

; Variables
Occurences.l
Global Plage.RGB,Couleurs.RGB,Couleurs2.RGB,Taille.point

Taille\X = 950 : Taille\Y = 650
Plage\R = 20 : Plage\G = 20 : Plage\B = 20
Couleurs\R = 0 : Couleurs\G = 0 : Couleurs\B = 0
Couleurs2\R = 255 : Couleurs2\G = 0 : Couleurs2\B = 0
Points.l = RGB(195, 93, 106)

; Création Fenêtre & Menus & Gadgets
OpenWindow(0,0,0,Taille\X/1.2,Taille\Y/1.2,#PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered,"Dessin...")
OpenWindowedScreen(WindowID(0),0,0,Taille\X/1.2,Taille\Y/1.2,0,0,0)
CreateMenu(0,WindowID(0))
  MenuItem(#Lancer,"Lancer")
  MenuItem(#Enregistrer,"Enregistrer")
  MenuItem(#Quitter,"Quitter")
  
  



Procedure Couleurs(Selection.l)
  Select Selection
    Case 0
      Rouge.l = Couleurs\R + (Random(Plage\R) - Plage\R)/2
      If Rouge > 255 : Rouge = 255 : EndIf
      If Rouge < 0 : Rouge = 0 : EndIf
      Vert.l = Couleurs\G + (Random(Plage\G) - Plage\G)/2
      If Vert > 255 : Vert= 255 : EndIf
      If Vert < 0 : Vert = 0 : EndIf
      Bleu.l = Couleurs\B + (Random(Plage\B) - Plage\B)/2
      If Bleu > 255 : Bleu = 255 : EndIf
      If Bleu < 0 : Bleu = 0 : EndIf
    Case 1
      Rouge.l = Couleurs2\R + (Random(Plage\R) - Plage\R)/2
      If Rouge > 255 : Rouge = 255 : EndIf
      If Rouge < 0 : Rouge = 0 : EndIf
      Vert.l = Couleurs2\G + (Random(Plage\G) - Plage\G)/2
      If Vert > 255 : Vert= 255 : EndIf
      If Vert < 0 : Vert = 0 : EndIf
      Bleu.l = Couleurs2\B + (Random(Plage\B) - Plage\B)/2
      If Bleu > 255 : Bleu = 255 : EndIf
      If Bleu < 0 : Bleu = 0 : EndIf
  EndSelect
  ProcedureReturn RGB(Rouge,Vert,Bleu)
EndProcedure


Procedure Dessin(DR.l,DC.l)
  X.l : Y.l : Largeur.l : Hauteur.l : RayonX.l : RayonY.l : Choix.l
  Select Random(2)
    Case 0
      X = Random(Taille\X)
      Y = Random(Taille\Y)
      Largeur = Random(Taille\X/DR)
      If Largeur < 3 : Largeur = 3 : EndIf
      Hauteur = Random(Taille\Y/DR)
      If Hauteur < 3 : Hauteur = 3 : EndIf
      Choix = Random(2)
      Select Choix
        Case 0
          StartDrawing(SpriteOutput(#Taille_Reelle))
            Box(X,Y,Largeur,Hauteur,Couleurs(0))
            Box(X + 2,Y + 2,Largeur - 4,Hauteur - 4,Couleurs(1))
          StopDrawing()
        Default
          StartDrawing(SpriteOutput(#Taille_Reelle))
            Box(X,Y,Largeur,Hauteur,Couleurs(1))
            Box(X + 2,Y + 2,Largeur - 4,Hauteur - 4,Couleurs(0))
          StopDrawing()
      EndSelect
    Default
      X = Random(Taille\X)
      Y = Random(Taille\Y)
      RayonX = Random(Taille\X/(DC + Random(5)))
      If RayonX < 3 : RayonX = 3 : EndIf
      RayonY = Random(Taille\Y/(DC + Random(5)))
      If RayonY < 3 : RayonY = 3 : EndIf
      Choix = Random(2)
      Select Choix
        Case 0
          StartDrawing(SpriteOutput(#Taille_Reelle))
            Ellipse(X,Y,RayonX,RayonY,Couleurs(0))
            Ellipse(X,Y,RayonX - 2,RayonY - 2,Couleurs(1))
          StopDrawing()
        Default
          StartDrawing(SpriteOutput(#Taille_Reelle))
            Ellipse(X,Y,RayonX,RayonY,Couleurs(1))
            Ellipse(X,Y,RayonX - 2,RayonY - 2,Couleurs(0))
          StopDrawing()
      EndSelect
    EndSelect
EndProcedure




Repeat
  Select WindowEvent()
    Case #PB_Event_CloseWindow
      Break
    Case #PB_Event_Menu
      Select EventMenuID()
        Case #Lancer
          MessageRequester("Dessin...","Choisissez la première couleur.")
          Code.l = ColorRequester()
          Couleurs\R = Red(Code)
          Couleurs\G = Green(Code)
          Couleurs\B = Blue(Code)
          MessageRequester("Dessin...","Choisissez la deuxième couleur.")
          Code.l = ColorRequester()
          Couleurs2\R = Red(Code)
          Couleurs2\G = Green(Code)
          Couleurs2\B = Blue(Code)
          MessageRequester("Dessin...","Choisissez la couleur des points.")
          Points = ColorRequester()
          CreateSprite(#Taille_Reelle,Taille\X,Taille\Y)
          StartDrawing(SpriteOutput(#Taille_Reelle))
            Box(0,0,Taille\X,Taille\Y,Couleurs(01))
          StopDrawing()
          Occurences = Random(150) + 50
          For i = 0 To Occurences
            Dessin(3,8)
          Next i
          SaveSprite(#Taille_Reelle,"Temp.bmp")
          LoadImage(#Taille,"Temp.bmp")
          DeleteFile("Temp.bmp")
          ResizeImage(#Taille,Taille\X/1.2,Taille\Y/1.2)
          StartDrawing(ScreenOutput())
            DrawImage(ImageID(),0,0)
          StopDrawing()
          FlipBuffers()
          Occurences = Random(80) + 10
          For i = 0 To Occurences
            Dessin(10,20)
          Next i
          SaveSprite(#Taille_Reelle,"Temp.bmp")
          LoadImage(#Taille,"Temp.bmp")
          DeleteFile("Temp.bmp")
          ResizeImage(#Taille,Taille\X/1.2,Taille\Y/1.2)
          StartDrawing(ScreenOutput())
            DrawImage(ImageID(),0,0)
          StopDrawing()
          FlipBuffers()
          For Y = 0 To Taille\Y Step 80
            For X = 0 To Taille\X Step 10
              For i = 0 To 15
                XX = X + Random(40) - 20
                YY = Y +  Random(60) - Random(60)
                If XX < 1 : XX = 1 : EndIf
                If XX > Taille\X : XX = Taille\X : EndIf
                If YY < 1 : YY = 1 : EndIf
                If YY > Taille\Y : YY = Taille\Y : EndIf
                StartDrawing(SpriteOutput(#Taille_Reelle))
                  Plot(XX - 1,YY - 1,Points)
                StopDrawing()
                For ii = 0 To 1
                  XX = X + Random(40) - 20
                  YY = Y +  Random(20) - Random(10)
                  If XX < 1 : XX = 1 : EndIf
                  If XX > Taille\X : XX = Taille\X : EndIf
                  If YY < 1 : YY = 1 : EndIf
                  If YY > Taille\Y : YY = Taille\Y : EndIf
                  StartDrawing(SpriteOutput(#Taille_Reelle))
                    Plot(XX - 1,YY - 1,Points)
                  StopDrawing()
                Next ii
              Next i
            Next X
          Next Y
          SaveSprite(#Taille_Reelle,"Temp.bmp")
          LoadImage(#Taille,"Temp.bmp")
          DeleteFile("Temp.bmp")
          ResizeImage(#Taille,Taille\X/1.2,Taille\Y/1.2)
          StartDrawing(ScreenOutput())
            DrawImage(ImageID(),0,0)
          StopDrawing()
          FlipBuffers()
        Case #Enregistrer
          SaveSprite(#Taille_Reelle,SaveFileRequester("Eregistrer","","BMP | *.BMP",0))
        Case #Quitter
          Break
      EndSelect
  EndSelect
  Delay(10)
ForEver

End
; IDE Options = PureBasic v3.94 (Windows - x86)
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

:lol:
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

Dobro a écrit ::lol:
Ne plaisante pas ça fait de très jolis fond d'écrans :P
dlolo
Messages : 118
Inscription : ven. 18/févr./2005 16:29

Message par dlolo »

Oh C'est Beau !! 8)
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Ne plaisante pas ça fait de très jolis fond d'écrans
ha ! tout a fait ! tout a fait ! :D
Répondre