Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| palette mille couleur | |
|
+3Jean Claude Jicehel mindstorm 7 participants | |
Auteur | Message |
---|
mindstorm
Nombre de messages : 685 Age : 55 Localisation : charente Date d'inscription : 13/02/2013
| Sujet: palette mille couleur Lun 30 Mar 2015 - 17:21 | |
| Bonjour a tous pour travailler les SUB, je viens de faire une palette de couleurs. il reste juste un problème " il faut être patient 3 mn environs" Si quelqu'un peut me donner l'astuce pour compiler Merci - Code:
-
' palette de couleur par Mindstorm sur une idée original de Nardo
label pick dim d,a$,r,g,b,ct,h$,i,v,rt,vt,bt,rtt,vtt,btt,y init()
timer 99:timer_interval 99,100:on_timer 99,pick end
' Tracé des cases pick: timer_off 99 r = color_pixel_red(1,mouse_x_position(1),mouse_y_position(1)) g = color_pixel_green(1,mouse_x_position(1),mouse_y_position(1)) b = color_pixel_blue(1,mouse_x_position(1),mouse_y_position(1)) h$ = right$("0"+hex$(r),2)+right$("0"+hex$(g),2)+right$("0"+hex$(b),2) ct=65536*r+256*g+b a$ = "R= "+right$(" "+str$(r),3)+chr$(10)+"G= "+right$(" "+str$(g),3)+chr$(10)+"B= "+right$(" "+str$(b),3) a$=a$+chr$(10)+h$+chr$(10)+str$(ct) caption 4,a$ color 2,r,g,b if clicked (1)=1 2d_target_is 8 r=r:v=g:b=b:rt=r:vt=v:bt=b:rtt=0:vtt=0:btt=0 for y=0 to 126 rtt=rtt+(r/127) : vtt=vtt+(v/127): btt=btt+(b/127) 2d_pen_color int(rtt),int(vtt),int(btt):2d_pen_width 15 :2d_line 10,y,10,y next y r=r:v=g:b=b:rt=r:vt=v:bt=b:rtt=r:vtt=g:btt=b for y=0 to 126 rtt=rtt+((255-r)/127) : vtt=vtt+((255-v)/127): btt=btt+((255-b)/127) 2d_pen_color int(rtt),int(vtt),int(btt):2d_pen_width 15 :2d_line 30,y,30,y next y end_if
if clicked(8)=1 r = color_pixel_red(8,mouse_x_position(8),mouse_y_position(8)) g = color_pixel_green(8,mouse_x_position(8),mouse_y_position(8)) b = color_pixel_blue(8,mouse_x_position(8),mouse_y_position(8)) h$ = right$("0"+hex$(r),2)+right$("0"+hex$(g),2)+right$("0"+hex$(b),2) ct=65536*r+256*g+b a$ = "R= "+right$(" "+str$(r),3)+chr$(10)+"G= "+right$(" "+str$(g),3)+chr$(10)+"B= "+right$(" "+str$(b),3) a$=a$+chr$(10)+h$+chr$(10)+str$(ct) caption 4,a$ 2d_target_is 3 color 3,r,g,b caption 7,caption$(4) end_if timer_on 99 return
sub init() dim_local i,r,v,b,y ,rt,vt,bt,rtt,vtt,btt width 0,380 : height 0,170: border_small 0: caption 0," - PALETTE -" picture 1 : width 1,170 : height 1,128 picture 2 : top 2,20: left 2,175 : width 2,60 : height 2,50 picture 8:left 8,left (2)+width (2)+4: width 8,40:height 8,128 picture 3 : top 3,20: left 3,left(8)+width(8)+4 : width 3,width(2) : height 3,height(2)
alpha 4: top 4,top(2)+height(2)+3: left 4,left(2): font_name 4,"Lucida Console" alpha 5 : left 5,left(2)+10 : top 5,5 : caption 5,"Survol": font_bold 5 alpha 6 : left 6,left(8)+width (8)+15 : top 6,5 : caption 6,"Choix": font_bold 6 alpha 7: top 7,top(4): left 7,left(3): font_name 7,"Lucida Console" 2d_target_is 1 ' Tracé de la palette
trace(255,0,0,0,0,1,0) trace(255,255,0,255,(-1),0,0) trace(0,255,0,510,0,0,1) trace(0,255,255,765,0,(-1),0) trace(0,0,255,1020,1,0,0) trace(255,0,255,1275,0,0,(-1))
show 0 end_sub
' Tracé de la palette dégradée sub trace(n_r,n_v,n_b,n_i,cal_r,cal_v,cal_b) r=n_r:v=n_v:b=n_b for i=n_i to (n_i+254) r=r+(cal_r):v=v+(cal_v):b=b+(cal_b):y=0 :rt=r:vt=v:bt=b:rtt=rt:vtt=vt:btt=bt for y=0 to 127 2d_pen_color int(rt),int(vt),int(bt):2d_pen_width 5 :2d_line 5+(i/10),y,5+(i/10),y rt=rt+((127-rtt)/127) : vt=vt+((127-vtt)/127): bt=bt+((127-btt)/127) next y next i end_sub | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: palette mille couleur Lun 30 Mar 2015 - 17:38 | |
| Ta palette est excellente et bien pratique. Pour gagner du temps à l'ouverture de la palette, tu pourrais procéder ainsi: Tu testes si palette.bmp existe. => S'il n'existe pas tu créais l'image et tu la sauvegardes et tu l'affiches => Si elle existe, tu la charges juste Ca devrait être beaucoup plus rapide dès la deuxième ouverture | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: palette mille couleur Lun 30 Mar 2015 - 18:47 | |
| Essai çà. Ce n'est pas plus rapide, mais çà fait patienter. - Code:
-
' palette de couleur par Mindstorm sur une idée original de Nardo
label pick dim d,a$,r,g,b,ct,h$,i,v,rt,vt,bt,rtt,vtt,btt,y dim cpt% : cpt%=1530 init() timer 99:timer_interval 99,10:on_timer 99,pick end
' Tracé des cases pick: timer_off 99 r = color_pixel_red(1,mouse_x_position(1),mouse_y_position(1)) g = color_pixel_green(1,mouse_x_position(1),mouse_y_position(1)) b = color_pixel_blue(1,mouse_x_position(1),mouse_y_position(1)) h$ = right$("0"+hex$(r),2)+right$("0"+hex$(g),2)+right$("0"+hex$(b),2) ct=65536*r+256*g+b a$ = "R= "+right$(" "+str$(r),3)+chr$(10)+"G= "+right$(" "+str$(g),3)+chr$(10)+"B= "+right$(" "+str$(b),3) a$=a$+chr$(10)+h$+chr$(10)+str$(ct) caption 4,a$ color 2,r,g,b if clicked (1)=1 2d_target_is 8 r=r:v=g:b=b:rt=r:vt=v:bt=b:rtt=0:vtt=0:btt=0 for y=0 to 126 rtt=rtt+(r/127) : vtt=vtt+(v/127): btt=btt+(b/127) 2d_pen_color int(rtt),int(vtt),int(btt):2d_pen_width 15 :2d_line 10,y,10,y next y r=r:v=g:b=b:rt=r:vt=v:bt=b:rtt=r:vtt=g:btt=b for y=0 to 126 rtt=rtt+((255-r)/127) : vtt=vtt+((255-v)/127): btt=btt+((255-b)/127) 2d_pen_color int(rtt),int(vtt),int(btt):2d_pen_width 15 :2d_line 30,y,30,y next y end_if
if clicked(8)=1 r = color_pixel_red(8,mouse_x_position(8),mouse_y_position(8)) g = color_pixel_green(8,mouse_x_position(8),mouse_y_position(8)) b = color_pixel_blue(8,mouse_x_position(8),mouse_y_position(8)) h$ = right$("0"+hex$(r),2)+right$("0"+hex$(g),2)+right$("0"+hex$(b),2) ct=65536*r+256*g+b a$ = "R= "+right$(" "+str$(r),3)+chr$(10)+"G= "+right$(" "+str$(g),3)+chr$(10)+"B= "+right$(" "+str$(b),3) a$=a$+chr$(10)+h$+chr$(10)+str$(ct) caption 4,a$ 2d_target_is 3 color 3,r,g,b caption 7,caption$(4) end_if timer_on 99 return
sub init() dim_local i,r,v,b,y ,rt,vt,bt,rtt,vtt,btt width 0,380 : height 0,170: border_small 0: caption 0," - PALETTE -" picture 1 : width 1,170 : height 1,128 picture 2 : top 2,20: left 2,175 : width 2,60 : height 2,50 picture 8:left 8,left (2)+width (2)+4: width 8,40:height 8,128 picture 3 : top 3,20: left 3,left(8)+width(8)+4 : width 3,width(2) : height 3,height(2)
alpha 4: top 4,top(2)+height(2)+3: left 4,left(2): font_name 4,"Lucida Console" alpha 5 : left 5,left(2)+10 : top 5,5 : caption 5,"Survol": font_bold 5 alpha 6 : left 6,left(8)+width (8)+15 : top 6,5 : caption 6,"Choix": font_bold 6 alpha 7: top 7,top(4): left 7,left(3): font_name 7,"Lucida Console" 2d_target_is 1 ' Tracé de la palette
trace(255,0,0,0,0,1,0) trace(255,255,0,255,(-1),0,0) trace(0,255,0,510,0,0,1) trace(0,255,255,765,0,(-1),0) trace(0,0,255,1020,1,0,0) trace(255,0,255,1275,0,0,(-1))
' show 0 end_sub
' Tracé de la palette dégradée sub trace(n_r,n_v,n_b,n_i,cal_r,cal_v,cal_b) r=n_r:v=n_v:b=n_b for i=n_i to (n_i+254) r=r+(cal_r):v=v+(cal_v):b=b+(cal_b):y=0 :rt=r:vt=v:bt=b:rtt=rt:vtt=vt:btt=bt for y=0 to 127 2d_pen_color int(rt),int(vt),int(bt):2d_pen_width 5 :2d_line 5+(i/10),y,5+(i/10),y rt=rt+((127-rtt)/127) : vt=vt+((127-vtt)/127): bt=bt+((127-btt)/127) next y display cpt%=cpt%-1 : caption 0,str$(cpt%) next i Caption 0,"PALETTE OK" end_sub
A+ | |
| | | mindstorm
Nombre de messages : 685 Age : 55 Localisation : charente Date d'inscription : 13/02/2013
| Sujet: Re: palette mille couleur Lun 30 Mar 2015 - 18:54 | |
| bravo messieurs, comment trouver des solutions de vieux routards sans répondre à la question! Je vais m'empresser de les adopter merci | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: palette mille couleur Lun 30 Mar 2015 - 19:16 | |
| Tu peux virer toute la ligne dim_local de la sub init() : elle ne joue aucun rôle. | |
| | | mindstorm
Nombre de messages : 685 Age : 55 Localisation : charente Date d'inscription : 13/02/2013
| Sujet: Re: palette mille couleur Lun 30 Mar 2015 - 20:14 | |
| les dim locals sont les fantômes du programme de Nardo en cherchant un peut, tu dois en trouver d'autres... | |
| | | mindstorm
Nombre de messages : 685 Age : 55 Localisation : charente Date d'inscription : 13/02/2013
| Sujet: Re: palette mille couleur Mer 1 Avr 2015 - 19:08 | |
| merci à Jicehel , Jean Claude et Papydall qui savent aiguiller juste ou il faut DONC - Code:
-
' palette de couleur par Mindstorm sur une idée original de Nardo
label pick dim d,a$,r,g,b,ct,h$,i,v,rt,vt,bt,rtt,vtt,btt,y dim cpt% : cpt%=1530 init() timer 99:timer_interval 99,10:on_timer 99,pick end
' Tracé des cases pick: timer_off 99 r = color_pixel_red(1,mouse_x_position(1),mouse_y_position(1)) g = color_pixel_green(1,mouse_x_position(1),mouse_y_position(1)) b = color_pixel_blue(1,mouse_x_position(1),mouse_y_position(1)) h$ = right$("0"+hex$(r),2)+right$("0"+hex$(g),2)+right$("0"+hex$(b),2) ct=65536*r+256*g+b a$ = "R= "+right$(" "+str$(r),3)+chr$(10)+"G= "+right$(" "+str$(g),3)+chr$(10)+"B= "+right$(" "+str$(b),3) a$=a$+chr$(10)+h$+chr$(10)+str$(ct) caption 4,a$ color 2,r,g,b if clicked (1)=1 2d_target_is 8 r=r:v=g:b=b:rt=r:vt=v:bt=b:rtt=0:vtt=0:btt=0 for y=0 to 126 rtt=rtt+(r/127) : vtt=vtt+(v/127): btt=btt+(b/127) 2d_pen_color int(rtt),int(vtt),int(btt):2d_pen_width 15 :2d_line 10,y,10,y next y r=r:v=g:b=b:rt=r:vt=v:bt=b:rtt=r:vtt=g:btt=b for y=0 to 126 rtt=rtt+((255-r)/127) : vtt=vtt+((255-v)/127): btt=btt+((255-b)/127) 2d_pen_color int(rtt),int(vtt),int(btt):2d_pen_width 15 :2d_line 30,y,30,y next y end_if
if clicked(8)=1 r = color_pixel_red(8,mouse_x_position(8),mouse_y_position(8)) g = color_pixel_green(8,mouse_x_position(8),mouse_y_position(8)) b = color_pixel_blue(8,mouse_x_position(8),mouse_y_position(8)) h$ = right$("0"+hex$(r),2)+right$("0"+hex$(g),2)+right$("0"+hex$(b),2) ct=65536*r+256*g+b a$ = "R= "+right$(" "+str$(r),3)+chr$(10)+"G= "+right$(" "+str$(g),3)+chr$(10)+"B= "+right$(" "+str$(b),3) a$=a$+chr$(10)+h$+chr$(10)+str$(ct) caption 4,a$ 2d_target_is 3 color 3,r,g,b caption 7,caption$(4) end_if timer_on 99 return
sub init() width 0,380 : height 0,170: border_small 0: caption 0," - PALETTE -" picture 1 : width 1,170 : height 1,128 picture 2 : top 2,20: left 2,175 : width 2,60 : height 2,50 picture 8:left 8,left (2)+width (2)+4: width 8,40:height 8,128 picture 3 : top 3,20: left 3,left(8)+width(8)+4 : width 3,width(2) : height 3,height(2)
alpha 4: top 4,top(2)+height(2)+3: left 4,left(2): font_name 4,"Lucida Console" alpha 5 : left 5,left(2)+10 : top 5,5 : caption 5,"Survol": font_bold 5 alpha 6 : left 6,left(8)+width (8)+15 : top 6,5 : caption 6,"Choix": font_bold 6 alpha 7: top 7,top(4): left 7,left(3): font_name 7,"Lucida Console" 2d_target_is 1 ' Tracé de la palette if file_exists ("C:\temp\palette.bmp")=1 file_load 1,"C:\temp\palette.bmp"
else trace(255,0,0,0,0,1,0) trace(255,255,0,255,(-1),0,0) trace(0,255,0,510,0,0,1) trace(0,255,255,765,0,(-1),0) trace(0,0,255,1020,1,0,0) trace(255,0,255,1275,0,0,(-1)) end_if ' show 0 end_sub
' Tracé de la palette dégradée
sub trace(n_r,n_v,n_b,n_i,cal_r,cal_v,cal_b) r=n_r:v=n_v:b=n_b for i=n_i to (n_i+254) r=r+(cal_r):v=v+(cal_v):b=b+(cal_b):y=0 :rt=r:vt=v:bt=b:rtt=rt:vtt=vt:btt=bt for y=0 to 127 2d_pen_color int(rt),int(vt),int(bt):2d_pen_width 5 :2d_line 5+(i/10),y,5+(i/10),y rt=rt+((127-rtt)/127) : vt=vt+((127-vtt)/127): bt=bt+((127-btt)/127) next y display cpt%=cpt%-1 : caption 0,str$(cpt%) next i file_save 1,"C:\temp\palette.bmp" Caption 0,"PALETTE stocker"
end_sub
évidemment cela vas beaucoup plus vite la seconde fois | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: palette mille couleur Mer 1 Avr 2015 - 20:31 | |
| Cool, par ce qu'en principe, ce genre de palette c'est pour servir souvent Bon aller, un autre truc rien que pour te faire plaisir. Regardes les programmes de JL35 ou d'Ygeronimi et tu verras que tu peux directement inclure l'image dans le source sous forme de data. Donc là, tu galères un peu (au niveau temps) quand tu fais le source mais après pour les utilisateurs, c'est rapide, même la première fois. Si tu y arrives, on verra si on peut donner un nouveau truc | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: palette mille couleur Mer 1 Avr 2015 - 20:37 | |
| | |
| | | mindstorm
Nombre de messages : 685 Age : 55 Localisation : charente Date d'inscription : 13/02/2013
| Sujet: Re: palette mille couleur Mer 1 Avr 2015 - 21:06 | |
| oups dans l'aide, les DATA ont l'air plus simple qu'une image! et je ne trouve pas les sources dont tu parle | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 2 Avr 2015 - 5:27 | |
| Voilà le code de l' outil de transformation : - Code:
-
Variables() Labels() Gui()
end
' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
SUB Variables() dim_local i%
' adresses des fichiers externes dim kgf$ : kgf$ = "C:\PROGRA~2\PANORA~1\PPE_Vs4b\dll\KGF.dll" dim file$ ' évenements dim clic%
' objets dim no% dim mem% : no%=no%+1 : mem% = no% dim MM% : no%=no%+1 : MM% = no% dim SM%(10) : for i% = 1 to 10 : no%=no%+1 : SM%(i%)= no% : next i% dim Pan% : no%=no%+1 : Pan% = no% dim Pict% : no%=no%+1 : Pict% = no%
' boites de dialogue dim OpenDial% : no%=no%+1 : OpenDial% = no% dim SaveDial% : no%=no%+1 : SaveDial% = no% ' fonctions dim L% dim H% END_SUB
' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
SUB Labels() label clic END_SUB
' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
SUB Gui() Caption 0,"Image >> Data" height 0,500 : width 0,700 top 0,(screen_y-height(0))/2 : left 0,(screen_x-width(0))/2
Dlist mem% Main_menu MM% Sub_menu SM%(1) : Parent SM%(1),MM% : Caption SM%(1),"Ouvrir" : On_click SM%(1),Clic Sub_menu SM%(2) : Parent SM%(2),MM% : Caption SM%(2),"Convertir" : On_click SM%(2),Clic : Inactive SM%(2) Sub_menu SM%(3) : Parent SM%(3),MM% : Caption SM%(3),"Enregistrer" : On_click SM%(3),Clic : Inactive SM%(3) Panel Pan% : Full_space Pan% Picture Pict% : Parent Pict%,Pan% : Hide Pict% END_SUB
' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Clic: clic% = number_click if clic% = SM%(1) :OpenFile() : end_if if clic% = SM%(2) :Ecriture_Image() : end_if if clic% = SM%(3) :Enregistrer() : end_if return
' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
SUB OpenFile() dim_local i% Inactive SM%(3) Open_Dialog OpenDial% Dir_dialog OpenDial%,"\" Filter OpenDial%,"*.bmp;*.jpg|*.bmp;*.jpg" file$=File_name$(OpenDial%) Delete OpenDial% if file$="_" i%=message_information_ok("Vous devez sélectionner un fichier !") exit_sub end_if Caption 0,"Image >> Data [ "+file_extract_name$(file$)+" ]" DetectSize() View(L%,H%) Active SM%(2) END_SUB
' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Sub DetectSize() Dim_Local res% dll_on KGF$ res%=dll_call3("AnalyzeImageFile",adr(file$),adr(L%),adr(H%)) if res%=1 message "Extension de fichier invalide !" end_if dll_off End_Sub
' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
SUB View(L%,H%) Dim_Local x%,y%,z x%=L% :y%=H% :z=1 if x%>y% while x%>width(pan%) or y%>Height(pan%) z=z-0.01 x%=x%*z y%=y%*z end_while else while y%>height(pan%) or x%>width(pan%) z=z-0.01 x%=x%*z y%=y%*z end_while end_if width Pict%,x% : height Pict%,y% File_load Pict%,file$ : Stretch_On Pict% show Pict% END_SUB
' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
SUB Ecriture_Image() Dim_Local nom$,x%,y%,R1%,G1%,B1%,cpt%,line$ Clear mem% Inactive SM%(1) Inactive SM%(3) nom$=file_extract_name$(File$) nom$=LEFT$(nom$,len(nom$)-4)+"_bmp" item_add mem%,"Sub Read_"+nom$+"(No%)" item_add mem%," Dim_local x%,y%,nom$,R%,G%,B%" item_add mem%," Restore" item_add mem%," read nom$" item_add mem%," while nom$<>"+chr$(34)+nom$+chr$(34) item_add mem%," read nom$" item_add mem%," End_while" item_add mem%," 2D_Target_Is No%" item_add mem%," For y%=0 To "+str$(L%-1) item_add mem%," For x%=0 To "+str$(H%-1) item_add mem%," Read R% :Read G% :Read B%" item_add mem%," 2D_Pen_Color R%,G%,B%" item_add mem%," 2D_Point y%,x%" item_add mem%," Next x%" item_add mem%," display" item_add mem%," Next y%" item_add mem%,"End_Sub" item_add mem%,"" item_add mem%,"Data "+chr$(34)+nom$+chr$(34) for x%=0 to L% -1 line$="" for y%= 0 to H% -1 cpt%=cpt%+1 R1% =color_pixel_red(Pict%,x%,y%) G1% =color_pixel_green(Pict%,x%,y%) B1% =color_pixel_blue(Pict%,x%,y%) line$=str$(R1%)+","+str$(G1%)+","+str$(B1%) item_add mem%,"data "+line$ calc_pourcent(cpt%,L%*H%) Display next y% next x% caption 0,"Image >> Data [ "+file_extract_name$(file$)+" ] Convertion terminée !" active SM%(1) active SM%(3) END_SUB
' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Sub calc_pourcent(P%,NMax%) dim_local i% i%=int((100*P%)/NMax%) caption 0,"Image >> Data [ "+file_extract_name$(file$)+" ] Convertion : "+str$(i%)+" %" end_sub
' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Sub Enregistrer() dim_local a$,b$ Save_dialog 500 filter 500,"*.bas|*.bas" a$=file_name$(500) b$="_bmp.bas" if right$(a$,8)<>b$:a$=a$+b$:end_if file_save mem%,a$ End_Sub J' ai pris l' image de la palette, passé à la moulinette au dessus et je l' ai enregistré sous "img_bmp.bas". J' ai repris ton code, j' ai viré ta sub de création de la palette placé l' appel de celle générée par l' outils dans le fichier "img_bmp.bas" puis en fin de fichier, j' ai mis le fichier créé en include. Voilà ton code avec modif : - Code:
-
' palette de couleur par Mindstorm sur une idée original de Nardo
label pick dim d,a$,r,g,b,ct,h$,i,v,rt,vt,bt,rtt,vtt,btt,y dim cpt% : cpt%=1530 init() timer 99:timer_interval 99,10:on_timer 99,pick end
' Tracé des cases pick: timer_off 99 r = color_pixel_red(1,mouse_x_position(1),mouse_y_position(1)) g = color_pixel_green(1,mouse_x_position(1),mouse_y_position(1)) b = color_pixel_blue(1,mouse_x_position(1),mouse_y_position(1)) h$ = right$("0"+hex$(r),2)+right$("0"+hex$(g),2)+right$("0"+hex$(b),2) ct=65536*r+256*g+b a$ = "R= "+right$(" "+str$(r),3)+chr$(10)+"G= "+right$(" "+str$(g),3)+chr$(10)+"B= "+right$(" "+str$(b),3) a$=a$+chr$(10)+h$+chr$(10)+str$(ct) caption 4,a$ color 2,r,g,b if clicked (1)=1 2d_target_is 8 r=r:v=g:b=b:rt=r:vt=v:bt=b:rtt=0:vtt=0:btt=0 for y=0 to 126 rtt=rtt+(r/127) : vtt=vtt+(v/127): btt=btt+(b/127) 2d_pen_color int(rtt),int(vtt),int(btt):2d_pen_width 15 :2d_line 10,y,10,y next y r=r:v=g:b=b:rt=r:vt=v:bt=b:rtt=r:vtt=g:btt=b for y=0 to 126 rtt=rtt+((255-r)/127) : vtt=vtt+((255-v)/127): btt=btt+((255-b)/127) 2d_pen_color int(rtt),int(vtt),int(btt):2d_pen_width 15 :2d_line 30,y,30,y next y end_if
if clicked(8)=1 r = color_pixel_red(8,mouse_x_position(8),mouse_y_position(8)) g = color_pixel_green(8,mouse_x_position(8),mouse_y_position(8)) b = color_pixel_blue(8,mouse_x_position(8),mouse_y_position(8)) h$ = right$("0"+hex$(r),2)+right$("0"+hex$(g),2)+right$("0"+hex$(b),2) ct=65536*r+256*g+b a$ = "R= "+right$(" "+str$(r),3)+chr$(10)+"G= "+right$(" "+str$(g),3)+chr$(10)+"B= "+right$(" "+str$(b),3) a$=a$+chr$(10)+h$+chr$(10)+str$(ct) caption 4,a$ 2d_target_is 3 color 3,r,g,b caption 7,caption$(4) end_if timer_on 99 return
sub init() width 0,380 : height 0,170: border_small 0: caption 0," - PALETTE -" picture 1 : width 1,170 : height 1,128 picture 2 : top 2,20: left 2,175 : width 2,60 : height 2,50 picture 8:left 8,left (2)+width (2)+4: width 8,40:height 8,128 picture 3 : top 3,20: left 3,left(8)+width(8)+4 : width 3,width(2) : height 3,height(2)
alpha 4: top 4,top(2)+height(2)+3: left 4,left(2): font_name 4,"Lucida Console" alpha 5 : left 5,left(2)+10 : top 5,5 : caption 5,"Survol": font_bold 5 alpha 6 : left 6,left(8)+width (8)+15 : top 6,5 : caption 6,"Choix": font_bold 6 alpha 7: top 7,top(4): left 7,left(3): font_name 7,"Lucida Console" 2d_target_is 1 ' Tracé de la palette Read_palette_bmp(1) ' show 0 end_sub
' Tracé de la palette dégradée
sub trace(n_r,n_v,n_b,n_i,cal_r,cal_v,cal_b) r=n_r:v=n_v:b=n_b for i=n_i to (n_i+254) r=r+(cal_r):v=v+(cal_v):b=b+(cal_b):y=0 :rt=r:vt=v:bt=b:rtt=rt:vtt=vt:btt=bt for y=0 to 127 2d_pen_color int(rt),int(vt),int(bt):2d_pen_width 5 :2d_line 5+(i/10),y,5+(i/10),y rt=rt+((127-rtt)/127) : vt=vt+((127-vtt)/127): bt=bt+((127-btt)/127) next y display cpt%=cpt%-1 : caption 0,str$(cpt%) next i file_save 1,"C:\temp\palette.bmp" Caption 0,"PALETTE stocker"
end_sub
#INCLUDE "img_bmp.bas" | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: palette mille couleur Jeu 2 Avr 2015 - 8:01 | |
| et bien sûr les data peuvent être intégrées directement dans le source à la place de l'include. C'est un choix et Ygeronimi les mets en include pour garder un programme court et lisible. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: Re Jeu 2 Avr 2015 - 9:07 | |
| La moulinette est modifiable à souhait. Au lieu de créer un fichier, on peut copier dans le presse papier pour ensuite coller dans le source... Maintenant, il faut prendre en considération la taille de l' image et la place que peuvent prendre les lignes de "Data". Là l' image fait 170 x 128 soit 21760 pixels... ...cela commence à faire. | |
| | | mindstorm
Nombre de messages : 685 Age : 55 Localisation : charente Date d'inscription : 13/02/2013
| Sujet: Re: palette mille couleur Jeu 2 Avr 2015 - 18:17 | |
| merci Ygeronimi juste si tu pouvais me passer le data car là il n'y est pas. pour la réponse a ta question il faut voir avec Jicehel c'est son idée maintenant, il me reste une sacrée question... pourquoi un fichier BMP que je crée ou modifie avec Panoramic n'est plus reconnue comme texture pour la 3D au départ, c'est un fichier généré par Wings3D mais il est très facile de le modifier avec paint ou autre. Bien sur mon idée est de pouvoir automatiser ces modifications, mais là... ps une sensation me fait penser a un erreur de taille d'image comment peut on mesurer avec précision c'elle ci? | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: palette mille couleur Jeu 2 Avr 2015 - 19:31 | |
| - Code:
-
SUB DimBmp(f$) ' Dimensions d'une image bmp -> rs_wi%, rs_hi% (largeur, hauteur en pixels) DIM_LOCAL rs_v%(8) IF VARIABLE("rs_wi%") = 0 THEN DIM rs_wi% IF VARIABLE("rs_hi%") = 0 THEN DIM rs_hi% FILEBIN_OPEN_READ 9, f$ FILEBIN_POSITION 9, 18: FILEBIN_BLOCK_READ 9,8,rs_v%(0) rs_wi% = rs_v%(0)+256*rs_v%(1)+65536*rs_v%(2)+16777216*rs_v%(3) rs_hi% = rs_v%(4)+256*rs_v%(5)+65536*rs_v%(6)+16777216*rs_v%(7) FILEBIN_CLOSE 9 END_SUB | |
| | | mindstorm
Nombre de messages : 685 Age : 55 Localisation : charente Date d'inscription : 13/02/2013
| Sujet: Re: palette mille couleur Jeu 2 Avr 2015 - 20:53 | |
| @ Jl35 peut tu me dire si il faut une boucle car je n'obtient que le form 0 | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: palette mille couleur Jeu 2 Avr 2015 - 21:12 | |
| Bonsoir mindstorm, je ne comprends pas bien ta question. C'est une sub qui renvoie les dimensions d'une image bmp, donnée par son nom de fichier, dans deux variables, donc complètement indépendante du contexte panoramic. Je précise bien que ça ne donne pas les dimensions d'une image affichée dans un Form panoramic, mais d'un fichier image bmp situé sur le disque. | |
| | | mindstorm
Nombre de messages : 685 Age : 55 Localisation : charente Date d'inscription : 13/02/2013
| Sujet: Re: palette mille couleur Jeu 2 Avr 2015 - 21:26 | |
| ça y est merci jl35 1 pixel d'erreur et tout est parterre j'ai bêtement cru qu' il scannait l'image, mais bien sur l'information est inscrite dans le fichier lui même. je vais pouvoir modifier les textures de mes objets 3DS beaucoup plus facilement. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Ven 3 Avr 2015 - 0:44 | |
| Le beurre, l' argent du beurre, le pot au lait est là ! Je ne livrerai pas la crémière... | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: palette mille couleur Ven 3 Avr 2015 - 1:20 | |
| La crémière c’est à mon compte. Je vous la livre : Ajoutez ceci (avant la SUB) - Code:
-
Read_palette_bmp(0) End Bon, je pense que le DISPLAY n'est pas nécessaire. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Ven 3 Avr 2015 - 2:45 | |
| Le display évite un scintillement...
A quel ligne tu places la tienne ?... Je ne vois rien si ce n' est un rechargement du form 0... | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: palette mille couleur Ven 3 Avr 2015 - 3:46 | |
| - ygeronimi a écrit:
- Le display évite un scintillement...
Soit dans un FORM ou dans un PICTURE, je ne vois pas de scintillement chez moi. - ygeronimi a écrit:
- A quel ligne tu places la tienne ?...
La mienne ? c’est quoi la mienne ? Bof, Je pinaille, sans plus. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Ven 3 Avr 2015 - 4:06 | |
| Je parlais de ligne... | |
| | | mindstorm
Nombre de messages : 685 Age : 55 Localisation : charente Date d'inscription : 13/02/2013
| Sujet: Re: palette mille couleur Sam 4 Avr 2015 - 21:25 | |
| bravo a tous je ne pensais vraiment pas occuper autant de monde avec un si petit programme. Finalement il n'était pas si simple que cela et grâce a vous, j'ai entrouvertes des portes qui me laissent entrevoir encore quelques années de travail | |
| | | silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: palette mille couleur Mar 7 Avr 2015 - 17:33 | |
| salut à tous, @mindstorm la sub trace() peut être grandement optimisé à mon avis, car elle effectue des calculs pour afficher 32640 pixels(255*128) mais nous n'en voyons que 3328(26*128). Principe de la sub: - Code:
-
dim i,n_i,y,X n_i=0
for i=n_i to (n_i+254) for y=0 to 127 X=5+(i/10) print X;" ";y next y print next i
Dans le cas de "2d_line X,y,X,y", X vaut 5, 5.1,5.2,etc... Mais les coordonnées de pixels sont des valeurs entières, donc afficher un pixel en "2d_line 5.3,7,5.3,7" par exemple, n'est pas pertinent. Pourquoi 3328 pixels visible? Et bien (i/10) va varier de 0 à 25(en valeurs entières); donc 26 valeurs multiplié par les 128 de la hauteur y, est égal à 3328! Environ 10 fois moins de pixel et 10 fois moins de calcul devrait sérieusement booster la vitesse d'affichage... | |
| | | Contenu sponsorisé
| Sujet: Re: palette mille couleur | |
| |
| | | | palette mille couleur | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |