En revanche, j'ai trouvé qu'on attendais trop avant d'avoir le résultat, j'ai accéléré un peu la procédure
Et j'en ai profité pour monté le nombre de passe de niveau 9 à 10000, car ça ne rendait pas super sur mes photos
Par contre, si ça ne sert à rien de mettre plus car ça finit par perdre l'effet de peinture
Code : Tout sélectionner
;{ ************** initialisations/Declarations*********************************
UsePNGImageDecoder():UseJPEGImageDecoder()
UsePNGImageEncoder()
Enumeration ; Window
#window
EndEnumeration
Enumeration ; Gadget
#bouton_dessin
#bouton_efface
#bouton_charge_image
#Gadget_text
#bouton_Sauve
#Gadget_scroll
#Gadget_titre
#Gadget_auteur
EndEnumeration
Enumeration ; Sprite
#Pinceau
#Pinceau3D
EndEnumeration
Enumeration ; Images
#image_reference
#image_Sortie
EndEnumeration
Enumeration ; Fonte
#Font_Window_Text_titre
#Font_Window_Auteur
EndEnumeration
Global File_image$,Phase
;-Declarations
Declare peint(largeur,Hauteur,nombre_de_coup_de_pinceau,Taille_x,Taille_y, delay_affichage, Array image_tab(2))
Declare Write_preference()
Declare Read_preference()
Declare INIT(largeur, Hauteur, Array image_tab(2))
;} ***********************************************************************
Read_preference()
OpenWindow(#window,win_x,win_y,1024+250,768+50+50,"", #PB_Window_SystemMenu )
; Déclarez les gadgets ici...
y_bouton=90 :x_bouton=10
ButtonGadget(#bouton_charge_image, x_bouton, y_bouton, 150, 30, "Charge_image")
ButtonGadget(#bouton_dessin, x_bouton, y_bouton+60, 100, 30, "dessine")
ButtonGadget(#bouton_efface, x_bouton, y_bouton+90, 100, 30, "efface")
ButtonGadget(#bouton_Sauve, x_bouton, y_bouton+210, 100, 30, "Sauve_image")
TextGadget(#Gadget_text, x_bouton, y_bouton+150, 200, 30, "" )
ProgressBarGadget(#Gadget_scroll, x_bouton, y_bouton+180, 150,30, 0, 100)
TextGadget(#Gadget_titre, x_bouton+500, 5, 300, 40, "Pure AutoPaint" )
SetGadgetFont(#Gadget_titre, LoadFont(#Font_Window_Text_titre, "Comic Sans MS", 20, 16))
TextGadget(#Gadget_auteur, x_bouton+800, 40, 250, 20, "By Dobro (speeded by Graph100 ;)" )
SetGadgetFont(#Gadget_auteur, LoadFont(#Font_Window_Auteur, "Comic Sans MS", 10, 16))
;{ *************** initialisations Graphique *********************************
InitSprite()
OpenWindowedScreen(WindowID(#window),200,70,1024,768,0,0,0) ; l'ecran
; ***** Creation du pinceau ******
;InitSprite3D()
;CreateSprite3D(#Pinceau3D, #Pinceau)
; *****************************
;} **********************************************************************
;{ ********************* boucle principale ***********************************
;-Boucle principale
Repeat
Event=WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
Select EventGadget()
Case #bouton_Sauve
GrabSprite(#image_sortie, 0, 0, 1024, 768)
File_image_save$=SaveFileRequester("Load Picture",File_image$,"*.png",1)
If File_image_save$<>""
SaveSprite(#image_sortie,File_image_save$,#PB_ImagePlugin_PNG )
FreeSprite(#image_sortie)
EndIf
Case #bouton_charge_image
File_image$=OpenFileRequester("Load Picture",File_image$,"*.jpg|*.png|*.bmp",1)
If File_image$<>""
LoadImage(#image_reference,File_image$)
ResizeImage(#image_reference,1024,768)
;StartDrawing(ScreenOutput())
;DrawImage(ImageId(#image_reference),0,0)
;StopDrawing()
Else
EndIf
Case #bouton_dessin
If IsImage(#image_reference)
DisableDebugger
SetGadgetText(#Gadget_text, "Phase 1/9")
largeur=ImageWidth(#image_reference)
Hauteur=ImageHeight(#image_reference)
Dim tab_image(largeur, Hauteur)
INIT(largeur,Hauteur,tab_image())
Phase=1
nombre_de_coup_de_pinceau=1000
Taille_x=100:Taille_y=100
Peint(largeur,Hauteur,nombre_de_coup_de_pinceau,Taille_x,Taille_y, 20,tab_image())
; *********
Beep_(440,50)
SetGadgetText(#Gadget_text, "Phase 2/9")
Phase=2
nombre_de_coup_de_pinceau=1200
Taille_x=50:Taille_y=50
Peint(largeur,Hauteur,nombre_de_coup_de_pinceau,Taille_x,Taille_y, 40,tab_image())
; *********
Beep_(440,50)
SetGadgetText(#Gadget_text, "Phase 3/9")
Phase=3
nombre_de_coup_de_pinceau=2400
Taille_x=15:Taille_y=15
Peint(largeur,Hauteur,nombre_de_coup_de_pinceau,Taille_x,Taille_y, 80,tab_image())
; *********
Beep_(440,50)
SetGadgetText(#Gadget_text, "Phase 4/9")
Phase=4
nombre_de_coup_de_pinceau=3800
Taille_x=10:Taille_y=10
Peint(largeur,Hauteur,nombre_de_coup_de_pinceau,Taille_x,Taille_y, 100,tab_image())
; *********
Beep_(440,50)
SetGadgetText(#Gadget_text, "Phase 5/9")
Phase=5
nombre_de_coup_de_pinceau=5800
Taille_x=8:Taille_y=8
Peint(largeur,Hauteur,nombre_de_coup_de_pinceau,Taille_x,Taille_y, 300,tab_image())
; *********
Beep_(440,50)
SetGadgetText(#Gadget_text, "Phase 6/9")
Phase=6
nombre_de_coup_de_pinceau=6500
Taille_x=2:Taille_y=2
Peint(largeur,Hauteur,nombre_de_coup_de_pinceau,Taille_x,Taille_y, 500,tab_image())
; *********
Beep_(440,50)
SetGadgetText(#Gadget_text, "Phase 7/9")
Phase=7
nombre_de_coup_de_pinceau=7000
Taille_x=3:Taille_y=3
Peint(largeur,Hauteur,nombre_de_coup_de_pinceau,Taille_x,Taille_y, 500,tab_image())
; *********
Beep_(440,50)
SetGadgetText(#Gadget_text, "Phase 8/9")
Phase=8
nombre_de_coup_de_pinceau=9500
Taille_x=2:Taille_y=3
Peint(largeur,Hauteur,nombre_de_coup_de_pinceau,Taille_x,Taille_y, 500,tab_image())
; *********
Beep_(440,50)
SetGadgetText(#Gadget_text, "Phase 9/9")
Phase=9
nombre_de_coup_de_pinceau=10000
Taille_x=1:Taille_y=1
Peint(largeur,Hauteur,nombre_de_coup_de_pinceau,Taille_x,Taille_y, 600,tab_image())
FlipBuffers()
Beep_(880,100)
EnableDebugger
SetGadgetText(#Gadget_text, "Terminé !")
EndIf
Case #bouton_efface
ClearScreen(RGB(0,0,0))
FlipBuffers()
EndSelect
EndSelect
Until Event=#PB_Event_CloseWindow
;} *************** fin boucle principale ****************************************
Write_preference()
;- **************************** Zone des Procedures **************************************
;- Procedures Zone
Procedure INIT(largeur,Hauteur, Array image_tab(2))
; By Dobro
StartDrawing(ImageOutput(#image_reference))
For a = 0 To largeur -1
For b = 0 To Hauteur -1
image_tab(a, b)=Point(a,b) ; recup la Couleur
Next
Next
StopDrawing()
EndProcedure
Procedure peint(largeur,Hauteur,nombre_de_coup_de_pinceau,Taille_x,Taille_y, delay_affichage, Array image_tab(2))
; By Dobro
SetGadgetAttribute(#Gadget_scroll, #PB_ProgressBar_Maximum, nombre_de_coup_de_pinceau)
StartDrawing(ScreenOutput())
For i=1 To nombre_de_coup_de_pinceau
If i%delay_affichage = 0
StopDrawing()
FlipBuffers()
StartDrawing(ScreenOutput())
EndIf
; StartDrawing(ImageOutput(#image_reference))
; ; Scan la couleur d'un pixel au hasard de l'image de Reference
x_source=Random(largeur-1)
y_source=Random(hauteur-1)
; Couleur_ref=Point(x_source,y_source) ; recup la Couleur
Couleur_ref=image_tab(x_source,y_source) ; recup la Couleur
; StopDrawing()
De=Random(10)
If De >0 And De<2
DrawingMode(#PB_2DDrawing_Default )
Box(x_source,y_source,Taille_x,Taille_y,Couleur_ref)
EndIf
If De >=2 And De<4
; StartDrawing(ScreenOutput())
DrawingMode(#PB_2DDrawing_Default )
Circle(x_source,y_source,Taille_x,Couleur_ref)
; StopDrawing()
EndIf
If De >=4 And De<6
; StartDrawing(ScreenOutput())
If Phase<>6
DrawingMode(#PB_2DDrawing_Outlined )
EndIf
Circle(x_source,y_source,Taille_x,Couleur_ref)
; StopDrawing()
EndIf
If De >=6 And De<8
; StartDrawing(ScreenOutput())
If Phase<>6
DrawingMode(#PB_2DDrawing_Outlined )
EndIf
Ellipse(x_source,y_source,Taille_x*4,Taille_x,Couleur_ref)
; StopDrawing()
EndIf
If De >=8 And De<=10
; StartDrawing(ScreenOutput())
If Phase<>6
DrawingMode(#PB_2DDrawing_Outlined )
EndIf
Ellipse(x_source,y_source,Taille_x,Taille_x*4,Couleur_ref)
; StopDrawing()
EndIf
While WindowEvent():Wend
SetGadgetState (#Gadget_scroll, i)
Next i
StopDrawing()
FlipBuffers()
EndProcedure
Procedure Write_preference()
If CreatePreferences("Pure_autopaint.prefs")
PreferenceGroup("Info")
WritePreferenceString("ApplicationName", "Pure_autopaint")
WritePreferenceString("Version", "1.00")
PreferenceGroup("Window")
PreferenceComment(" Les Window dimensions")
PreferenceComment("")
WritePreferenceLong ("WindowX", WindowX(#window))
WritePreferenceLong ("WindowY", WindowY(#window))
PreferenceGroup("Path")
WritePreferenceString("chemin image", File_image$)
ClosePreferences()
EndIf
EndProcedure
Procedure Read_preference()
Shared win_x,win_y,File_image$
If OpenPreferences("Pure_autopaint.prefs")
PreferenceGroup("Info")
ReadPreferenceString("ApplicationName", "")
ReadPreferenceString("Version", "")
PreferenceGroup("Window")
win_x=ReadPreferenceLong ("WindowX", 0)
win_y=ReadPreferenceLong ("WindowY", 0)
PreferenceGroup("Path")
File_image$=ReadPreferenceString("chemin image", "c:\")
ClosePreferences()
EndIf
EndProcedure
;
; EPB