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 |
|
|
| Outil pour écriture sans SCENE2D ou ailleurs | |
| | Auteur | Message |
---|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Outil pour écriture sans SCENE2D ou ailleurs Mer 8 Fév 2012 - 18:47 | |
| J'ai fait un petit outil pour pouvoir poser des textes transparents dans un SCENE2D. Pour ce faire, il faut créer un SPRITE dans lequel un charge un fichier BMP contenant le texte écrit, mais sur fond noir, car le noir sert de couleur transparente pour un SPRITE. Mon outil permet donc de constituer un PICTURE à l'écran, avec le texte saisi avec tous ces attributs (police, taille, couleur, gras, italique et sousligné). On peut ensuite le transformer en SPRITE (fond noir) et l'enregistrer dans un fichier BMP. Pour pouvoir utiliser ce programme aussi ailleurs que pour le monde SCENE2D, un peut aussi choisir la couleur de fond et appliquer ce fond par un autre bouton. Afin de rester compatible avec les SPRITE, j'ai placé un picture de 200x200 pixels à l'écran. Ceci sont les dimensions maximales d'un SPRITE. Pour un autre usage, il est facile d'adapter le programme à d'autres dimensions. Voici le code: - Code:
-
' construire des écritures transparentes ' pour: SCENE2D
label dessiner, c_font, c_size, c_couleur, gensprite label c_gras, c_italique, c_sousligne, c_couleur_fond label genfond, enregistrer
dim fil$, i%, j%, r%, g%, b%, fr%, fg%, fb%, cx%
edit 1 : top 1,10 : left 1,10 : width 1,200 combo 2 : top 2,100 : left 2,250 : font_names_load 2 text 2,"Arial" : on_click 2,c_font spin 3 : top 3,100 : left 3,410 width 3,60 : min 3,4 : max 3,72 : position 3,12 button 4 : top 4,330 : left 4,10 : caption 4,"Dessiner" alpha 5 : top 5,130 : left 5,230 : caption 5,"R:" spin 6 : top 6,130 : left 6,250 : width 6,60 min 6,0 : max 6,255 : position 6,0 alpha 7 : top 7,130 : left 7,320 : caption 7,"G:" spin 8 : top 8,130 : left 8,340 : width 8,60 min 8,0 : max 8,255 : position 8,0 alpha 9 : top 9,130 : left 9,410 : caption 9,"B:" spin 10 : top 10,130 : left 10,430 : width 10,60 min 10,0 : max 10,255 : position 10,0 button 11 : top 11,330 : left 11,110 : caption 11,"Gén. Sprite" save_dialog 12 : filter 12,"Fichiers BMP|*.bmp" check 13 : top 13,160 : left 13,250 : caption 13,"Gras" check 14 : top 14,160 : left 14,320 : caption 14,"Italique" check 15 : top 15,160 : left 15,390 : caption 15,"Sousligné" alpha 16 : top 16,70 : left 16,230 : font_size 16,12 : font_bold 16 caption 16,"Polices:" alpha 17 : top 17,220 : left 17,230 : font_size 17,12 : font_bold 17 caption 17,"Fond:" alpha 18 : top 18,250 : left 18,230 : caption 18,"R:" spin 19 : top 19,250 : left 19,250 : width 19,60 min 19,0 : max 19,255 : position 19,0 alpha 20 : top 20,250 : left 20,320 : caption 20,"G:" spin 21 : top 21,250 : left 21,340 : width 21,60 min 21,0 : max 21,255 : position 21,0 alpha 22 : top 22,250 : left 22,410 : caption 22,"B:" spin 23 : top 23,250 : left 23,430 : width 23,60 min 23,0 : max 23,255 : position 23,0 button 24 : top 24,330 : left 24,210 : caption 24,"Gén. Fond" picture 25 : top 25,130 : left 25,510 width 25,50 : height 25,25 picture 26 : top 26,250 : left 26,510 width 26,50 : height 26,25 button 27 : top 27,330 : left 27,310 : caption 27,"Enregistrer"
picture 100 : top 100,100 : left 100,10 width 100,200 : height 100,200 : 2d_target_is 100 image 101 : 2d_image_copy 101,0,0,199,199
fr% = 255 : fg% = 255 : fb% = 255
text 1,text$(2) font_name 1,text$(2) font_size 1,position(3) font_name 100,text$(2) font_size 100,position(3) font_color 1,position(6),position(8),position(10) font_color 100,position(6),position(8),position(10)
print_target_is 100
on_click 2,c_font on_change 3,c_size on_click 4,dessiner on_change 6,c_couleur on_change 8,c_couleur on_change 10,c_couleur on_click 11,gensprite on_click 13,c_gras on_click 14,c_italique on_click 15,c_sousligne on_change 19,c_couleur_fond on_change 21,c_couleur_fond on_change 23,c_couleur_fond on_click 24,genfond on_click 27,enregistrer
end
c_font: font_name 1,text$(2) font_name 100,text$(2) return
c_size: font_size 1,position(3) font_size 100,position(3) return
dessiner: 2d_image_paste 101,0,0 font_size 100,position(3) print_locate 5,5 print trim$(text$(1)) return
c_couleur: font_color 1,position(6),position(8),position(10) font_color 100,position(6),position(8),position(10) color 25,position(6),position(8),position(10) return gensprite: r% = color_pixel_red(100,0,0) g% = color_pixel_green(100,0,0) b% = color_pixel_blue(100,0,0) cx% = (r%*256+g%)*256+b% for i%=0 to 199 for j%=0 to 199 r% = color_pixel_red(100,i%,j%) g% = color_pixel_green(100,i%,j%) b% = color_pixel_blue(100,i%,j%) if (r%*256+g%)*256+b%=cx% then 2d_point i%,j% next j% display next i% return genfond: r% = color_pixel_red(100,0,0) g% = color_pixel_green(100,0,0) b% = color_pixel_blue(100,0,0) cx% = (r%*256+g%)*256+b% 2d_pen_color fr%,fg%,fb% for i%=0 to 199 for j%=0 to 199 r% = color_pixel_red(100,i%,j%) g% = color_pixel_green(100,i%,j%) b% = color_pixel_blue(100,i%,j%) if (r%*256+g%)*256+b%=cx% then 2d_point i%,j% next j% display next i% 2d_pen_color 0,0,0 return
enregistrer: fil$ = file_name$(12) if fil$="_" then return if instr(lower$(fil$),".bmp")<>(len(fil$)-3) then fil$ = fil$ + ".bmp" file_save 100,fil$ return
c_gras: if checked(13)=1 font_bold 1 font_bold 100 else font_bold_off 1 font_bold_off 100 end_if return
c_italique: if checked(14)=1 font_italic 1 font_italic 100 else font_italic_off 1 font_italic_off 100 end_if return
c_sousligne: if checked(15)=1 font_underline 1 font_underline 100 else font_underline_off 1 font_underline_off 100 end_if return c_couleur_fond: fr% = position(19) fg% = position(21) fb% = position(23) color 26,fr%,fg%,fb% return
| |
| | | lodchjo
Nombre de messages : 162 Age : 53 Localisation : Anvers Date d'inscription : 26/12/2011
| Sujet: Re: Outil pour écriture sans SCENE2D ou ailleurs Mer 8 Fév 2012 - 19:38 | |
| Impeccable, bravo, vraiment! J'ai une petite question quand-même, peut-être une casse-tête: j'ai fait un essai, et, par faute de windows, pas la tienne, il reste des traces blanches autour des lettres quand le polis est plus grand que 12. (Windows fait des lettres de la couleur désiréé, mais rajout aussi un peu de relief aux lettres... ce qui donne mal au crane aux graphistes Serait-ce possible d'accorder la sensibilité pour les couleurs pendant la transformation d'une manière ou autre? P.ex. permettre une marge de 10% pour les valeurs R,G et B. (ou ajustable de 1 a 10% selon les besoins.). Si vous êtes trop occupé, vous en faites pas, c'est pas urgent du tout pour moi! J'y pensais juste que sa pourrait servir. De toute façon, c'est très bien fait! | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Outil pour écriture sans SCENE2D ou ailleurs Mer 8 Fév 2012 - 21:45 | |
| Je vais réfléchir à l'ajout d'un réglage de tolérance. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Outil pour écriture sans SCENE2D ou ailleurs Mer 8 Fév 2012 - 23:11 | |
| Voilà une nouvelle version. On peut maintenant choisir si l'on veut maintenir les ombres (cas par défaut) ou pas. C'est une case à cocher. - Code:
-
' construire des écritures transparentes ' pour: SCENE2D
label dessiner, c_font, c_size, c_couleur, gensprite label c_gras, c_italique, c_sousligne, c_couleur_fond label genfond, enregistrer, c_ombre
dim fil$, i%, j%, r%, g%, b%, fr%, fg%, fb%, cx% dim pr%, pg%, pb%, flag_ombre%
edit 1 : top 1,10 : left 1,10 : width 1,200 combo 2 : top 2,100 : left 2,250 : font_names_load 2 text 2,"Arial" : on_click 2,c_font spin 3 : top 3,100 : left 3,410 width 3,60 : min 3,4 : max 3,72 : position 3,12 button 4 : top 4,330 : left 4,10 : caption 4,"Dessiner" alpha 5 : top 5,130 : left 5,230 : caption 5,"R:" spin 6 : top 6,130 : left 6,250 : width 6,60 min 6,0 : max 6,255 : position 6,0 alpha 7 : top 7,130 : left 7,320 : caption 7,"G:" spin 8 : top 8,130 : left 8,340 : width 8,60 min 8,0 : max 8,255 : position 8,0 alpha 9 : top 9,130 : left 9,410 : caption 9,"B:" spin 10 : top 10,130 : left 10,430 : width 10,60 min 10,0 : max 10,255 : position 10,0 button 11 : top 11,330 : left 11,110 : caption 11,"Gén. Sprite" save_dialog 12 : filter 12,"Fichiers BMP|*.bmp" check 13 : top 13,160 : left 13,250 : caption 13,"Gras" check 14 : top 14,160 : left 14,320 : caption 14,"Italique" check 15 : top 15,160 : left 15,390 : caption 15,"Sousligné" alpha 16 : top 16,70 : left 16,230 : font_size 16,12 : font_bold 16 caption 16,"Polices:" alpha 17 : top 17,220 : left 17,230 : font_size 17,12 : font_bold 17 caption 17,"Fond:" alpha 18 : top 18,250 : left 18,230 : caption 18,"R:" spin 19 : top 19,250 : left 19,250 : width 19,60 min 19,0 : max 19,255 : position 19,0 alpha 20 : top 20,250 : left 20,320 : caption 20,"G:" spin 21 : top 21,250 : left 21,340 : width 21,60 min 21,0 : max 21,255 : position 21,0 alpha 22 : top 22,250 : left 22,410 : caption 22,"B:" spin 23 : top 23,250 : left 23,430 : width 23,60 min 23,0 : max 23,255 : position 23,0 button 24 : top 24,330 : left 24,210 : caption 24,"Gén. Fond" picture 25 : top 25,130 : left 25,510 width 25,50 : height 25,25 picture 26 : top 26,250 : left 26,510 width 26,50 : height 26,25 button 27 : top 27,330 : left 27,310 : caption 27,"Enregistrer" check 28 : top 28,280 : left 28,230 : caption 28,"Maintenir ombres" mark_on 28
picture 100 : top 100,100 : left 100,10 width 100,200 : height 100,200 : 2d_target_is 100 image 101 : 2d_image_copy 101,0,0,199,199
fr% = 255 : fg% = 255 : fb% = 255 pr% = 255 : pg% = 255 : pb% = 255 flag_ombre% = 1
text 1,text$(2) font_name 1,text$(2) font_size 1,position(3) font_name 100,text$(2) font_size 100,position(3) font_color 1,position(6),position(8),position(10) font_color 100,position(6),position(8),position(10)
print_target_is 100
on_click 2,c_font on_change 3,c_size on_click 4,dessiner on_change 6,c_couleur on_change 8,c_couleur on_change 10,c_couleur on_click 11,gensprite on_click 13,c_gras on_click 14,c_italique on_click 15,c_sousligne on_change 19,c_couleur_fond on_change 21,c_couleur_fond on_change 23,c_couleur_fond on_click 24,genfond on_click 27,enregistrer on_click 28,c_ombre
end
c_font: font_name 1,text$(2) font_name 100,text$(2) return
c_size: font_size 1,position(3) font_size 100,position(3) return
dessiner: 2d_image_paste 101,0,0 font_size 100,position(3) print_locate 5,5 print trim$(text$(1)) return
c_couleur: pr% = position(6) : pg% = position(8) : pb% = position(10) font_color 1,pr%, pg%, pb% font_color 100,pr%, pg%, pb% color 25,pr%, pg%, pb% return gensprite: r% = color_pixel_red(100,0,0) g% = color_pixel_green(100,0,0) b% = color_pixel_blue(100,0,0) cx% = (r%*256+g%)*256+b% for i%=0 to 199 for j%=0 to 199 r% = color_pixel_red(100,i%,j%) g% = color_pixel_green(100,i%,j%) b% = color_pixel_blue(100,i%,j%) if flag_ombre%=1 if (r%*256+g%)*256+b%=cx% then 2d_point i%,j% else if (r%<>pr%) or (g%<>pg%) or (b%<>pb%) then 2d_point i%,j% end_if next j% display next i% return genfond: r% = color_pixel_red(100,0,0) g% = color_pixel_green(100,0,0) b% = color_pixel_blue(100,0,0) cx% = (r%*256+g%)*256+b% 2d_pen_color fr%,fg%,fb% for i%=0 to 199 for j%=0 to 199 r% = color_pixel_red(100,i%,j%) g% = color_pixel_green(100,i%,j%) b% = color_pixel_blue(100,i%,j%) if flag_ombre%)1 if (r%*256+g%)*256+b%=cx% then 2d_point i%,j% else if (r%<>pr%) or (g%<>pg%) or (b%<>pb%) then 2d_point i%,j% end_if next j% display next i% 2d_pen_color 0,0,0 return
enregistrer: fil$ = file_name$(12) if fil$="_" then return if instr(lower$(fil$),".bmp")<>(len(fil$)-3) then fil$ = fil$ + ".bmp" file_save 100,fil$ return
c_gras: if checked(13)=1 font_bold 1 font_bold 100 else font_bold_off 1 font_bold_off 100 end_if return
c_italique: if checked(14)=1 font_italic 1 font_italic 100 else font_italic_off 1 font_italic_off 100 end_if return
c_sousligne: if checked(15)=1 font_underline 1 font_underline 100 else font_underline_off 1 font_underline_off 100 end_if return c_couleur_fond: fr% = position(19) fg% = position(21) fb% = position(23) color 26,fr%,fg%,fb% return
c_ombre: flag_ombre% = checked(28) return
| |
| | | exdragon
Nombre de messages : 601 Date d'inscription : 05/01/2012
| Sujet: Re: Outil pour écriture sans SCENE2D ou ailleurs Jeu 9 Fév 2012 - 1:00 | |
| | |
| | | lodchjo
Nombre de messages : 162 Age : 53 Localisation : Anvers Date d'inscription : 26/12/2011
| Sujet: Re: Outil pour écriture sans SCENE2D ou ailleurs Jeu 9 Fév 2012 - 8:13 | |
| Wow, Klaus, c'est magnifique, bravo!!! J'en suis sur que je m'en servirai! Lode | |
| | | Contenu sponsorisé
| Sujet: Re: Outil pour écriture sans SCENE2D ou ailleurs | |
| |
| | | | Outil pour écriture sans SCENE2D ou ailleurs | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |