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 de création d'info-bulles | |
| | Auteur | Message |
---|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Outil de création d'info-bulles Ven 22 Juin 2012 - 15:35 | |
| Ma dll PrintScreen.dll contient des fonctions de manupulation d'images, et en particulier une fonction ModifyPicture qui permet de faire des incrustations d'images dans une autre, en respectant une couleur de transparence. J'ai donc fait un utilitaire permettant de générer des info-bulles de façon interactive et visuelle, et de les sauvegarder dans un fichier JPG. Ce fichier peut ensuite être "incrusté" dans une autre image, à l'endroit voulu, à l'aide de la fonction ModifyPicture de PrintScreen.dll. Voici le code: - Code:
-
' infobulle.bas
label labels : gosub labels gosub constantes gosub variables gosub form0 gosub GUI
end
labels: label d_bulle, constantes, variables, form0, GUI label chg_bulle, chg_fond, dessiner, enregistrer return
constantes: return form0: full_space 0 caption 0,"Générateur de bulles d'information" return
variables: dim bulle_x%, bulle_y%, bulle_w%, bulle_h% dim bulle_pointe_org%, bulle_pointe_x%, bulle_pointe_y% dim bulle_color_R%, bulle_color_G%, bulle_color_B% dim fond_color_R%, fond_color_G%, fond_color_B%
dim k%, x1%, x2%, y1%, y2%, fx%, fy%, xd%, yd%, f$
dim no%, no1%, no_bulle%, no_picture_h%, no_picture_w% dim no_bulle_x%, no_bulle_y%, no_bulle_w%, no_bulle_h% dim no_pointe_x%, no_pointe_y% dim no_bulle_R%, no_bulle_G%, no_bulle_B%, no_apercu% dim no_fond_R%, no_fond_G%, no_fond_B%, no_fond% dim no_pointe_org%, no_save%, no_transp_color% return GUI: no% = no% + 1 : save_dialog no% : no_save% = no% filter no%,"Fichier image|*.bmp" no% = no% + 1 : container no% : no1% = no% : caption no%,"Taille de l'image" top no%,10 : left no%,10 : width no%,160 : height no%,100 no% = no% + 1 : alpha no% : parent no%,no1% top no%,20 : left no%,10 : caption no%,"Hauteur:" no% = no% + 1 : edit no% : parent no%,no1% : no_picture_h% = no% top no%,20 : left no%,80 : width no%,30 : text no%,"400" no% = no% + 1 : alpha no% : parent no%,no1% top no%,50 : left no%,10 : caption no%,"Largeur:" no% = no% + 1 : edit no% : parent no%,no1% : no_picture_w% = no% top no%,50 : left no%,80 : width no%,30 : text no%,"500" no% = no% + 1 : container no% : no1% = no% : caption no%,"Info-Bulle" top no%,120 : left no%,10 : width no%,160 : height no%,580 no% = no% + 1 : alpha no% : parent no%,no1% top no%,20 : left no%,10 : caption no%,"Origine X:" no% = no% + 1 : edit no% : parent no%,no1% : no_bulle_x% = no% top no%,20 : left no%,80 : width no%,30 : text no%,"150" no% = no% + 1 : alpha no% : parent no%,no1% top no%,50 : left no%,10 : caption no%,"Origine Y:" no% = no% + 1 : edit no% : parent no%,no1% : no_bulle_Y% = no% top no%,50 : left no%,80 : width no%,30 : text no%,"150" no% = no% + 1 : alpha no% : parent no%,no1% top no%,90 : left no%,10 : caption no%,"Hauteur:" no% = no% + 1 : edit no% : parent no%,no1% : no_bulle_h% = no% top no%,90 : left no%,80 : width no%,30 : text no%,"100" no% = no% + 1 : alpha no% : parent no%,no1% top no%,120 : left no%,10 : caption no%,"Largeur:" no% = no% + 1 : edit no% : parent no%,no1% : no_bulle_w% = no% top no%,120 : left no%,80 : width no%,30 : text no%,"200" no% = no% + 1 : alpha no% : parent no%,no1% top no%,160 : left no%,10 : caption no%,"Dép. flèche" no% = no% + 1 : combo no% : parent no%,no1% : no_pointe_org% = no% top no%,160 : left no%,80 : width no%,70 item_add no%,"Haut" : item_add no%,"Droite" item_add no%,"Bas" : item_add no%,"Gauche" text no%,"Bas" no% = no% + 1 : alpha no% : parent no%,no1% top no%,190 : left no%,10 : caption no%,"Pointe X:" no% = no% + 1 : edit no% : parent no%,no1% : no_pointe_x% = no% top no%,190 : left no%,80 : width no%,30 : text no%,"150" no% = no% + 1 : alpha no% : parent no%,no1% top no%,220 : left no%,10 : caption no%,"Pointe Y:" no% = no% + 1 : edit no% : parent no%,no1% : no_pointe_Y% = no% top no%,220 : left no%,80 : width no%,30 : text no%,"365" no% = no% + 1 : alpha no% : parent no%,no1% top no%,260 : left no%,10 : caption no%,"Bulle:" no% = no% + 1 : alpha no% : parent no%,no1% top no%,280 : left no%,10 : caption no%,"R" no% = no% + 1 : alpha no% : parent no%,no1% top no%,280 : left no%,30 : caption no%,"G" no% = no% + 1 : alpha no% : parent no%,no1% top no%,280 : left no%,50 : caption no%,"B" no% = no% + 1 : alpha no% : parent no%,no1% top no%,260 : left no%,90 : caption no%,"Fond:" no% = no% + 1 : alpha no% : parent no%,no1% top no%,280 : left no%,90 : caption no%,"R" no% = no% + 1 : alpha no% : parent no%,no1% top no%,280 : left no%,110 : caption no%,"G" no% = no% + 1 : alpha no% : parent no%,no1% top no%,280 : left no%,130 : caption no%,"B" no% = no% + 1 : scroll_bar no% : parent no%,no1% : no_bulle_R% = no% top no%,300 : left no%,10 : vertical no% : min no%,0 : max no%,255 position no%,255 : on_change no%,chg_bulle no% = no% + 1 : scroll_bar no% : parent no%,no1% : no_bulle_G% = no% top no%,300 : left no%,30 : vertical no% : min no%,0 : max no%,255 position no%,255 : on_change no%,chg_bulle no% = no% + 1 : scroll_bar no% : parent no%,no1% : no_bulle_B% = no% top no%,300 : left no%,50 : vertical no% : min no%,0 : max no%,255 position no%,0 : on_change no%,chg_bulle no% = no% + 1 : picture no% : parent no%,no1% : no_apercu% = no% top no%,430 : left no%,10 : width no%,60 : height no%,50 color no%,position(no_bulle_R%),position(no_bulle_G%),position(no_bulle_B%)
no% = no% + 1 : scroll_bar no% : parent no%,no1% : no_fond_R% = no% top no%,300 : left no%,90 : vertical no% : min no%,0 : max no%,255 position no%,127 : on_change no%,chg_fond no% = no% + 1 : scroll_bar no% : parent no%,no1% : no_fond_G% = no% top no%,300 : left no%,110 : vertical no% : min no%,0 : max no%,255 position no%,127 : on_change no%,chg_fond no% = no% + 1 : scroll_bar no% : parent no%,no1% : no_fond_B% = no% top no%,300 : left no%,130 : vertical no% : min no%,0 : max no%,255 position no%,127 : on_change no%,chg_fond no% = no% + 1 : picture no% : parent no%,no1% : no_fond% = no% top no%,430 : left no%,90 : width no%,60 : height no%,50 color no%,position(no_fond_R%),position(no_fond_G%),position(no_fond_B%)
no% = no% + 1 : button no% : parent no%,no1% : on_click no%,dessiner top no%,500 : left no%,10 : caption no%,"Dessiner" no% = no% + 1 : button no% : parent no%,no1% : on_click no%,enregistrer top no%,540 : left no%,10 : caption no%,"Enregistrer"
no% = no% + 1 : alpha no% : no_transp_color% = no% top no%,10 : left no%,200 f$ = str$(position(no_fond_R%)) f$ = f$ + "," + str$(position(no_fond_G%)) f$ = f$ + "," + str$(position(no_fond_B%)) caption no%,"Couleur fond: "+f$ no% = no% + 1 : no_bulle% = no% return chg_bulle: color no_apercu%,position(no_bulle_R%),position(no_bulle_G%),position(no_bulle_B%) return chg_fond: color no_fond%,position(no_fond_R%),position(no_fond_G%),position(no_fond_B%) f$ = str$(position(no_fond_R%)) f$ = f$ + "," + str$(position(no_fond_G%)) f$ = f$ + "," + str$(position(no_fond_B%)) caption no_transp_color%,"Couleur fond: "+f$ return
dessiner: if object_exists(no_bulle%)=1 then delete no_bulle% picture no_bulle% : top no_bulle%,40 left no_bulle%,200 width no_bulle%,val(text$(no_picture_w%)) height no_bulle%,val(text$(no_picture_h%))
bulle_x% = val(text$(no_bulle_x%)) bulle_y% = val(text$(no_bulle_y%)) bulle_w% = val(text$(no_bulle_w%)) bulle_h% = val(text$(no_bulle_h%)) bulle_pointe_org% = item_index(no_pointe_org%) if bulle_pointe_org%=0 then bulle_pointe_org% = 3 bulle_pointe_x% = val(text$(no_pointe_x%)) bulle_pointe_y% = val(text$(no_pointe_y%)) bulle_color_R% = position(no_bulle_R%) bulle_color_G% = position(no_bulle_G%) bulle_color_B% = position(no_bulle_B%) fond_color_R% = position(no_fond_R%) fond_color_G% = position(no_fond_G%) fond_color_B% = position(no_fond_B%)
gosub d_bulle
end
d_bulle: color no_bulle%,fond_color_R%,fond_color_G%,fond_color_B% 2d_target_is no_bulle% 2d_pen_width 1 2d_fill_color bulle_color_R%, bulle_color_G%, bulle_color_B% 2d_rectangle bulle_x%,bulle_y%,bulle_x%+bulle_w%-1,bulle_y%+bulle_h%-1
select bulle_pointe_org% case 1 : ' ligne du haut k% = bulle_w%/7 x1% = bulle_x% + 3*k% y1% = bulle_y% x2% = x1% + k% y2% = y1% fx% = x1% + k%/2 fy% = y1% - 2 xd% = 0 yd% = 0 case 2 : ' ligne à droite k% = bulle_h%/5 x1% = bulle_x% + bulle_w% - 1 y1% = bulle_y% + 2*k% x2% = x1% y2% = y1% + k% fx% = x1% + 2 fy% = y1% + k%/2 xd% = 0 - 1 yd% = 0 case 3 : ' ligne du bas k% = bulle_w%/7 x1% = bulle_x% + 3*k% y1% = bulle_y% + bulle_h% - 1 x2% = x1% + k% y2% = y1% fx% = x1% + k%/2 fy% = y1% + 2 xd% = 0 yd% = 0 - 1 case 4 : ' ligne à gauche k% = bulle_h%/5 x1% = bulle_x% y1% = bulle_y% + 2*k% x2% = x1% y2% = y1% + k% fx% = x1% - 2 fy% = y1% + k%/2 xd% = 0 yd% = 0 end_select 2d_poly_from x1%,y1% 2d_poly_to bulle_pointe_x%,bulle_pointe_y% 2d_poly_to x2%+xd%,y2%+yd% 2d_flood fx%,fy%, bulle_color_R%, bulle_color_G%, bulle_color_B% 2d_pen_color bulle_color_R%, bulle_color_G%, bulle_color_B% 2d_line x1%+xd%,y1%+yd%, x2%+xd%,y2%+yd% 2d_pen_color 0,0,0 2d_target_is 0 return enregistrer: if object_exists(no_bulle%)=0 message "Il n'y a rien à enregistrer." return end_if f$ = file_name$(no_save%) if f$="_" then return if right$(f$,4)<>".bmp" then f$ = f$ + ".bmp" file_save no_bulle%,f$ return Voici l'interface visuel, avec les valeurs par défaut: Le fichier généré contient l'image affichée à droite. On peut choisir la taille et la position relative de la bulle, le côté de départ de la flèche et le point d'arrivée, ainsi que la taille globale de l'image générée. EDIT J'ai ajouté un réglage de la couleur de fond.
Dernière édition par Klaus le Ven 22 Juin 2012 - 19:25, édité 3 fois | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Outil de création d'info-bulles Ven 22 Juin 2012 - 15:48 | |
| Ce soir, j'essaye de faire parler un orc avec ces fonctions (image de fond + collage de la machoire qui bouge (d'accord, je pourrais le faire avec un sprite, mais bon)) + Bulle avec le texte et utilisation de ta dll pour le faire parler. Merci pour ton kit | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Outil de création d'info-bulles Sam 23 Juin 2012 - 0:24 | |
| Nouvelle version, on peut maintenant choisir d'avoir des coins arrondis (rayon 10 pixels). Voici le dernier source: - Code:
-
' infobulle.bas
label labels : gosub labels gosub constantes gosub variables gosub form0 gosub GUI
end
labels: label d_bulle, constantes, variables, form0, GUI label chg_bulle, chg_fond, dessiner, enregistrer return
constantes: return form0: full_space 0 caption 0,"Générateur de bulles d'information" return
variables: dim bulle_x%, bulle_y%, bulle_w%, bulle_h%, bulle_arrondi% dim bulle_pointe_org%, bulle_pointe_x%, bulle_pointe_y% dim bulle_color_R%, bulle_color_G%, bulle_color_B% dim fond_color_R%, fond_color_G%, fond_color_B%
dim k%, x1%, x2%, y1%, y2%, fx%, fy%, xd%, yd%, f$
dim no%, no1%, no_bulle%, no_picture_h%, no_picture_w% dim no_bulle_x%, no_bulle_y%, no_bulle_w%, no_bulle_h% dim no_pointe_x%, no_pointe_y%, no_bulle_arrondi% dim no_bulle_R%, no_bulle_G%, no_bulle_B%, no_apercu% dim no_fond_R%, no_fond_G%, no_fond_B%, no_fond% dim no_pointe_org%, no_save%, no_transp_color% return GUI: no% = no% + 1 : save_dialog no% : no_save% = no% filter no%,"Fichier image|*.bmp" no% = no% + 1 : container no% : no1% = no% : caption no%,"Taille de l'image" top no%,10 : left no%,10 : width no%,160 : height no%,100 no% = no% + 1 : alpha no% : parent no%,no1% top no%,20 : left no%,10 : caption no%,"Hauteur:" no% = no% + 1 : edit no% : parent no%,no1% : no_picture_h% = no% top no%,20 : left no%,80 : width no%,30 : text no%,"400" no% = no% + 1 : alpha no% : parent no%,no1% top no%,50 : left no%,10 : caption no%,"Largeur:" no% = no% + 1 : edit no% : parent no%,no1% : no_picture_w% = no% top no%,50 : left no%,80 : width no%,30 : text no%,"500" no% = no% + 1 : container no% : no1% = no% : caption no%,"Info-Bulle" top no%,120 : left no%,10 : width no%,160 : height no%,610 no% = no% + 1 : alpha no% : parent no%,no1% top no%,20 : left no%,10 : caption no%,"Origine X:" no% = no% + 1 : edit no% : parent no%,no1% : no_bulle_x% = no% top no%,20 : left no%,80 : width no%,30 : text no%,"150" no% = no% + 1 : alpha no% : parent no%,no1% top no%,50 : left no%,10 : caption no%,"Origine Y:" no% = no% + 1 : edit no% : parent no%,no1% : no_bulle_Y% = no% top no%,50 : left no%,80 : width no%,30 : text no%,"150" no% = no% + 1 : alpha no% : parent no%,no1% top no%,90 : left no%,10 : caption no%,"Hauteur:" no% = no% + 1 : edit no% : parent no%,no1% : no_bulle_h% = no% top no%,90 : left no%,80 : width no%,30 : text no%,"100" no% = no% + 1 : alpha no% : parent no%,no1% top no%,120 : left no%,10 : caption no%,"Largeur:" no% = no% + 1 : edit no% : parent no%,no1% : no_bulle_w% = no% top no%,120 : left no%,80 : width no%,30 : text no%,"200" no% = no% + 1 : alpha no% : parent no%,no1% top no%,160 : left no%,10 : caption no%,"Dép. flèche" no% = no% + 1 : combo no% : parent no%,no1% : no_pointe_org% = no% top no%,160 : left no%,80 : width no%,70 item_add no%,"Haut" : item_add no%,"Droite" item_add no%,"Bas" : item_add no%,"Gauche" text no%,"Bas" no% = no% + 1 : alpha no% : parent no%,no1% top no%,190 : left no%,10 : caption no%,"Pointe X:" no% = no% + 1 : edit no% : parent no%,no1% : no_pointe_x% = no% top no%,190 : left no%,80 : width no%,30 : text no%,"150" no% = no% + 1 : alpha no% : parent no%,no1% top no%,220 : left no%,10 : caption no%,"Pointe Y:" no% = no% + 1 : edit no% : parent no%,no1% : no_pointe_Y% = no% top no%,220 : left no%,80 : width no%,30 : text no%,"365" no% = no% + 1 : alpha no% : parent no%,no1% top no%,260 : left no%,10 : caption no%,"Bulle:" no% = no% + 1 : alpha no% : parent no%,no1% top no%,280 : left no%,10 : caption no%,"R" no% = no% + 1 : alpha no% : parent no%,no1% top no%,280 : left no%,30 : caption no%,"G" no% = no% + 1 : alpha no% : parent no%,no1% top no%,280 : left no%,50 : caption no%,"B" no% = no% + 1 : alpha no% : parent no%,no1% top no%,260 : left no%,90 : caption no%,"Fond:" no% = no% + 1 : alpha no% : parent no%,no1% top no%,280 : left no%,90 : caption no%,"R" no% = no% + 1 : alpha no% : parent no%,no1% top no%,280 : left no%,110 : caption no%,"G" no% = no% + 1 : alpha no% : parent no%,no1% top no%,280 : left no%,130 : caption no%,"B" no% = no% + 1 : scroll_bar no% : parent no%,no1% : no_bulle_R% = no% top no%,300 : left no%,10 : vertical no% : min no%,0 : max no%,255 position no%,255 : on_change no%,chg_bulle no% = no% + 1 : scroll_bar no% : parent no%,no1% : no_bulle_G% = no% top no%,300 : left no%,30 : vertical no% : min no%,0 : max no%,255 position no%,255 : on_change no%,chg_bulle no% = no% + 1 : scroll_bar no% : parent no%,no1% : no_bulle_B% = no% top no%,300 : left no%,50 : vertical no% : min no%,0 : max no%,255 position no%,0 : on_change no%,chg_bulle no% = no% + 1 : picture no% : parent no%,no1% : no_apercu% = no% top no%,430 : left no%,10 : width no%,60 : height no%,50 color no%,position(no_bulle_R%),position(no_bulle_G%),position(no_bulle_B%)
no% = no% + 1 : scroll_bar no% : parent no%,no1% : no_fond_R% = no% top no%,300 : left no%,90 : vertical no% : min no%,0 : max no%,255 position no%,127 : on_change no%,chg_fond no% = no% + 1 : scroll_bar no% : parent no%,no1% : no_fond_G% = no% top no%,300 : left no%,110 : vertical no% : min no%,0 : max no%,255 position no%,127 : on_change no%,chg_fond no% = no% + 1 : scroll_bar no% : parent no%,no1% : no_fond_B% = no% top no%,300 : left no%,130 : vertical no% : min no%,0 : max no%,255 position no%,127 : on_change no%,chg_fond no% = no% + 1 : picture no% : parent no%,no1% : no_fond% = no% top no%,430 : left no%,90 : width no%,60 : height no%,50 color no%,position(no_fond_R%),position(no_fond_G%),position(no_fond_B%) no% = no% + 1 : check no% : parent no%,no1% : no_bulle_arrondi% = no% top no%,500 : left no%,10 : caption no%,"Arrondi"
no% = no% + 1 : button no% : parent no%,no1% : on_click no%,dessiner top no%,530 : left no%,10 : caption no%,"Dessiner" no% = no% + 1 : button no% : parent no%,no1% : on_click no%,enregistrer top no%,570 : left no%,10 : caption no%,"Enregistrer"
no% = no% + 1 : alpha no% : no_transp_color% = no% top no%,10 : left no%,200 f$ = str$(position(no_fond_R%)) f$ = f$ + "," + str$(position(no_fond_G%)) f$ = f$ + "," + str$(position(no_fond_B%)) caption no%,"Couleur fond: "+f$ no% = no% + 1 : no_bulle% = no% return chg_bulle: color no_apercu%,position(no_bulle_R%),position(no_bulle_G%),position(no_bulle_B%) return chg_fond: color no_fond%,position(no_fond_R%),position(no_fond_G%),position(no_fond_B%) f$ = str$(position(no_fond_R%)) f$ = f$ + "," + str$(position(no_fond_G%)) f$ = f$ + "," + str$(position(no_fond_B%)) caption no_transp_color%,"Couleur fond: "+f$ return
dessiner: if object_exists(no_bulle%)=1 then delete no_bulle% picture no_bulle% : top no_bulle%,40 left no_bulle%,200 width no_bulle%,val(text$(no_picture_w%)) height no_bulle%,val(text$(no_picture_h%))
bulle_x% = val(text$(no_bulle_x%)) bulle_y% = val(text$(no_bulle_y%)) bulle_w% = val(text$(no_bulle_w%)) bulle_h% = val(text$(no_bulle_h%)) bulle_pointe_org% = item_index(no_pointe_org%) if bulle_pointe_org%=0 then bulle_pointe_org% = 3 bulle_pointe_x% = val(text$(no_pointe_x%)) bulle_pointe_y% = val(text$(no_pointe_y%)) bulle_color_R% = position(no_bulle_R%) bulle_color_G% = position(no_bulle_G%) bulle_color_B% = position(no_bulle_B%) fond_color_R% = position(no_fond_R%) fond_color_G% = position(no_fond_G%) fond_color_B% = position(no_fond_B%) bulle_arrondi% = checked(no_bulle_arrondi%)
gosub d_bulle
end
d_bulle: color no_bulle%,fond_color_R%,fond_color_G%,fond_color_B% 2d_target_is no_bulle% 2d_pen_width 1 2d_fill_color bulle_color_R%, bulle_color_G%, bulle_color_B% if bulle_arrondi%=0 2d_rectangle bulle_x%,bulle_y%,bulle_x%+bulle_w%-1,bulle_y%+bulle_h%-1 else 2d_circle bulle_x%+10,bulle_y%+10,10 2d_circle bulle_x%+bulle_w%-1-10,bulle_y%+10,10 2d_circle bulle_x%+10,bulle_y%+bulle_h%-1-10,10 2d_circle bulle_x%+bulle_w%-1-10,bulle_y%+bulle_h% -1-10,10 2d_rectangle bulle_x%+10,bulle_y%,bulle_x%+bulle_w% -1-10,bulle_y%+bulle_h%-1 2d_rectangle bulle_x%,bulle_y%+10,bulle_x%+bulle_w% -1,bulle_y%+bulle_h%-1-10 2d_pen_color bulle_color_R%, bulle_color_G%, bulle_color_B% 2d_line bulle_x%+10,bulle_y%+1,bulle_x%+10,bulle_y%+bulle_h%-1-1 2d_line bulle_x%+bulle_w%-1-10-1,bulle_y%+1,bulle_x%+bulle_w%-1-10-1,bulle_y%+bulle_h%-1-1 2d_line bulle_x%+1,bulle_y%+10,bulle_x%+bulle_w%-1-1,bulle_y%+10 2d_line bulle_x%+1,bulle_y%+bulle_h%-1-10-1,bulle_x%+bulle_w%-1-1,bulle_y%+bulle_h%-10-1-1 2d_pen_color 0,0,0 end_if
select bulle_pointe_org% case 1 : ' ligne du haut k% = bulle_w%/7 x1% = bulle_x% + 3*k% y1% = bulle_y% x2% = x1% + k% y2% = y1% fx% = x1% + k%/2 fy% = y1% - 2 xd% = 0 yd% = 0 case 2 : ' ligne à droite k% = bulle_h%/5 x1% = bulle_x% + bulle_w% - 1 y1% = bulle_y% + 2*k% x2% = x1% y2% = y1% + k% fx% = x1% + 2 fy% = y1% + k%/2 xd% = 0 - 1 yd% = 0 case 3 : ' ligne du bas k% = bulle_w%/7 x1% = bulle_x% + 3*k% y1% = bulle_y% + bulle_h% - 1 x2% = x1% + k% y2% = y1% fx% = x1% + k%/2 fy% = y1% + 2 xd% = 0 yd% = 0 - 1 case 4 : ' ligne à gauche k% = bulle_h%/5 x1% = bulle_x% y1% = bulle_y% + 2*k% x2% = x1% y2% = y1% + k% fx% = x1% - 2 fy% = y1% + k%/2 xd% = 0 yd% = 0 end_select 2d_poly_from x1%,y1% 2d_poly_to bulle_pointe_x%,bulle_pointe_y% 2d_poly_to x2%+xd%,y2%+yd% 2d_flood fx%,fy%, bulle_color_R%, bulle_color_G%, bulle_color_B% 2d_pen_color bulle_color_R%, bulle_color_G%, bulle_color_B% 2d_line x1%+xd%,y1%+yd%, x2%+xd%,y2%+yd% 2d_pen_color 0,0,0 2d_target_is 0 return enregistrer: if object_exists(no_bulle%)=0 message "Il n'y a rien à enregistrer." return end_if f$ = file_name$(no_save%) if f$="_" then return if right$(f$,4)<>".bmp" then f$ = f$ + ".bmp" file_save no_bulle%,f$ return
et voici le résultat avec coins arrondis: | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Outil de création d'info-bulles Sam 23 Juin 2012 - 14:36 | |
| Et un autre outil, à utiliser avec les info-bulles ou pas. Comment déterminer l'endroit EXACT où insérer la vignette dans une grande image ? Il faut calculer les pixels, mais ce n'est pas simple. J'ai fait un outil qui permet ceci: - charger une grande image qui sera affichée avec stretch_on (BMP ou JPG) - charger à-côté jusqu'à 3 vignettes (BMP ou JPG) - coller une ou plusieurs vignettes dans la grande image - sauvegarder l'image résultante dans un fichier (BMP) Les vignettes sont elles-mêmes des images qui peuvent être fabriquées par mon outil InfoBulle, mais peuvent aussi provenir de toute autre source (clip-art télé-chargée, autre photo plus petite, ...) Pour coller une vignette, on procède comme suit: - clic gauche dans la vignette à un endroit précis - clic gauche dans la grande image à l'endroit précis où l'on voudrait caler l'endroit de la vignette cliqué Et, comme par magie, la vignette apparait, SANS son fond qui agit comme couleur transparente ! En fait, on prend la couleur du pixel du coin en bas à gauche de la vignette. Pour ce faire, j'ai ajouté 4 nouvelles fonctions à PrintScreen.dll: n% = dll_call0("GetPictureHeight") n% = dll_call0("GetPictureWidth") Ces deux fonctions retournent les dimensions REELLES de l'image chargée par LoadPicture n% = dll_call0("GetClipboardPictureWidth") n% = dll_call0("GetClipboardPictureHeight") Ces deux fonctions retournent les dimensions REELLES de n'importe quelle image chargée dans le presse-papier, par exemple par CLIBOARD_COPY. Et voici le source: - Code:
-
' incruster.bas label labels : gosub labels gosub constantes gosub variables gosub form0 gosub menu gosub GUI gosub initialisations
end
labels: label constantes, variables, form0, menu, GUI, initialisations label load_p0, load_p1, load_p2, load_p3, selpicx, load, clickpic label save_p0 return constantes: dim dll$ : dll$ = "PrintScreen.dll" dim rep$ : rep$ = "c:\DOCUME~1\klaus\MESDOC~1\MESPRO~2\INFOBU~1\" return
variables: dim no%, no1%, n%, f$, tcR%, tcG%, tcB%, x%, y%, xp%, yp% dim pic_w%, pic_h%, pic_x_w%, pic_x_h% dim no_pic%, no_vert%, no_hor% dim no_pic1%, no_pic2%, no_pic3% dim no_open%, no_save% dim sel_pic%, sel_pic_x%, sel_pic_y% return
form0: full_space 0 caption 0,"Incruster des vignettes dans une image" return
menu: return
GUI: no% = no% + 1 : open_dialog no% : no_open% = no% filter no%,"Fichier image|*.jpg;*.bmp" no% = no% + 1 : save_dialog no% : no_save% = no% filter no%,"Fichier image|*.bmp"
no% = no% + 1 : picture no% : no_pic% = no% top no%,40 : left no%,40 : on_click no%,clickpic width no%,900 : height no%,600 : stretch_on no% no% = no% + 1 : button no% : caption no%,"..." top no%,660 : left no%,40 : width no%,40 : on_click no%,load_p0 no% = no% + 1 : button no% : caption no%,"Sauver" top no%,660 : left no%,100 : width no%,40 : on_click no%,save_p0
no% = no% + 1 : picture no% : no_pic1% = no% top no%,40 : left no%,960 : on_click no%,selpicx width no%,200 : height no%,200 : stretch_on no% color no%,255,127,127 no% = no% + 1 : picture no% : no_pic2% = no% top no%,250 : left no%,960 : on_click no%,selpicx width no%,200 : height no%,200 : stretch_on no% color no%,127,255,127 no% = no% + 1 : picture no% : no_pic3% = no% top no%,460 : left no%,960 : on_click no%,selpicx width no%,200 : height no%,200 : stretch_on no% color no%,127,127,255
no% = no% + 1 : button no% : caption no%,"..." top no%,40 : left no%,1170 : width no%,40 : on_click no%,load_p1 no% = no% + 1 : button no% : caption no%,"..." top no%,250 : left no%,1170 : width no%,40 : on_click no%,load_p2 no% = no% + 1 : button no% : caption no%,"..." top no%,460 : left no%,1170 : width no%,40 : on_click no%,load_p3
return
initialisations: dll_on rep$+dll$ return
load_p0: n% = no_pic% gosub load return
load_p1: n% = no_pic1% gosub load return
load_p2: n% = no_pic2% return
load_p3: n% = no_pic3% return load: f$ = file_name$(no_open%) if f$<>"_" then file_load n%,f$ return
save_p0: f$ = file_name$(no_save%) if f$="_" then return if lower$(right$(f$,4))<>".bmp" then f$ = f$ + ".bmp" file_save no_pic%,f$ return selpicx: sel_pic% = number_click clipboard_copy sel_pic% pic_x_w% = dll_call0("GetClipboardPictureWidth") pic_x_h% = dll_call0("GetClipboardPictureHeight") xp% = mouse_x_left_down(sel_pic%)*pic_x_w%/width(sel_pic%) yp% = mouse_y_left_down(sel_pic%)*pic_x_h%/height(sel_pic%) return clickpic: tcR% = color_pixel_red(sel_pic%,0,height(sel_pic%)-1) tcG% = color_pixel_green(sel_pic%,0,height(sel_pic%)-1) tcB% = color_pixel_blue(sel_pic%,0,height(sel_pic%)-1) ' ici, incruster cette image clipboard_copy no_pic% n% = dll_call0("LoadPicture") pic_w% = dll_call0("GetPictureWidth") pic_h% = dll_call0("GetPictureHeight") clipboard_copy sel_pic%
x% = mouse_x_left_down(no_pic%)*pic_w%/width(no_pic%) - xp% y% = mouse_y_left_down(no_pic%)*pic_h%/height(no_pic%) - yp%
n% = dll_call5("ModifyPicture",x%,y%,tcR%,tcG%,tcB%) n% = dll_call0("SavePicture") clipboard_paste no_pic% return
Maintenant, on a une chaîne complète pour manipuler des images et faire des incrustations ! Attention: il faut reprendre PrintScreen.dll sur mon WebDav ! | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Outil de création d'info-bulles Sam 23 Juin 2012 - 19:45 | |
| Ça nous manque un dessinateur et un scénariste pour se lancer dans la bande dessinée ! Plus sérieusement, Klaus tu es génial ! | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Outil de création d'info-bulles Sam 23 Juin 2012 - 21:01 | |
| - Papydall a écrit:
- Plus sérieusement, Klaus tu es génial !
Ben... whoai, c'est bien çà qui m'enerve, si seulement un jour j'arrivais à ce niveau... Mais on ne change rien, c'est bien ainsi (sauf à ce que je m'améliore ) et on en profite... A+ | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Outil de création d'info-bulles Sam 23 Juin 2012 - 22:11 | |
| Jean Claude, il n’y a pas de quoi t’énerver. Toi-même tu as dit que tu t’améliores : donc aujourd’hui, tu es mieux qu’hier et demain tu seras meilleur qu’aujourd’hui. Et puis qui a dit que tu n’es pas génial aussi ? Moi-même, on m’a qualifié, autrefois de génial et je pense qu’aujourd’hui encore, je le suis …dans mon domaine. Je te salue génialement | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Outil de création d'info-bulles Sam 23 Juin 2012 - 23:12 | |
| Merci pour les fleurs ! Ce qui m'importe, c'est que l'un ou l'autre parmi vous trouvera ces outils utiles. D'ailleurs, il manquait un léger détail: le texte des info-bulles ! Voilà qui est corrigé: Le programme a un bouton en haut libellé "Texte". Un clic sur ce bouton affiche une form dans laquelle on peut saisir un texte dans un mémo et régler ses attributs (police, taille, gras, ...) Les tailles sont limitées entre 8 et 16. Le tout premier champ est un CHECK qui permet d'activer ou désactiver l'édition du texte. Par défaut, c'est désactivé. Et si le programme détecte une anomalie, il va le signaler et décocher automatiquement cette case. Cette fenêtre montre 3 boutons: "Abandon" sort de cette fenêtre en désactivant le texte à éditer. "Montrer" applique les attributs choisis au mémo, pour visualiser l'effet. "Valider" ne fait rien si la case d'activation est décochée. Mais si elle est cochée, ce bouton vérifie d'abord si le texte peut réellement être imprimé dans l'info-bulle. On vérifie si le texte tient à l'intérieur, aussi bien en hauteur qu'en largeur. Et seulement si c'est bon, le programme signale que le texte sera imprimé. Sinon, il donne un message d'erreur clair et désactive le texte. La form se ferme alors et on continue dans le programme principal. Le bouton "Dessiner" montre alors l'info-bulle AVEC le texte, qui sera centré dans la bulle, verticalement et horizontalement. On peut reprendre le bouton "Texte" pour changer le texte ou ses attributs, puis valider. Il faut alors cliquer à nouveau sur "Dessiner" pour voir l'effet. Voici le code: - Code:
-
' infobulle.bas
label labels : gosub labels gosub constantes gosub variables gosub form0 gosub GUI
end
labels: label d_bulle, d_texte, constantes, variables, form0, GUI label chg_bulle, chg_fond, dessiner, enregistrer label texte, close_texte, texte_ok, texte_no, texte_show return
constantes: return form0: full_space 0 caption 0,"Générateur de bulles d'information" return
variables: dim bulle_x%, bulle_y%, bulle_w%, bulle_h%, bulle_arrondi% dim bulle_pointe_org%, bulle_pointe_x%, bulle_pointe_y% dim bulle_color_R%, bulle_color_G%, bulle_color_B% dim fond_color_R%, fond_color_G%, fond_color_B%
dim k%, x1%, x2%, y1%, y2%, fx%, fy%, xd%, yd%, f$, n%
dim no%, no1%, no_bulle%, no_picture_h%, no_picture_w% dim no_bulle_x%, no_bulle_y%, no_bulle_w%, no_bulle_h% dim no_pointe_x%, no_pointe_y%, no_bulle_arrondi% dim no_bulle_R%, no_bulle_G%, no_bulle_B%, no_apercu% dim no_fond_R%, no_fond_G%, no_fond_B%, no_fond% dim no_pointe_org%, no_save%, no_transp_color% dim no_texte%, texte_ok%, no_essai% dim no_texte_go%, no_texte_memo%, no_texte_font%, no_texte_size% dim no_texte_bold%, no_texte_ital%, no_texte_under% dim texte_h%, texte_w%
return GUI: no% = no% + 1 : save_dialog no% : no_save% = no% filter no%,"Fichier image|*.bmp" no% = no% + 1 : picture no% : hide no% : no_essai% = no% no% = no% + 1 : container no% : no1% = no% : caption no%,"Taille de l'image" top no%,10 : left no%,10 : width no%,160 : height no%,100 no% = no% + 1 : alpha no% : parent no%,no1% top no%,20 : left no%,10 : caption no%,"Hauteur:" no% = no% + 1 : edit no% : parent no%,no1% : no_picture_h% = no% top no%,20 : left no%,80 : width no%,30 : text no%,"400" no% = no% + 1 : alpha no% : parent no%,no1% top no%,50 : left no%,10 : caption no%,"Largeur:" no% = no% + 1 : edit no% : parent no%,no1% : no_picture_w% = no% top no%,50 : left no%,80 : width no%,30 : text no%,"500" no% = no% + 1 : container no% : no1% = no% : caption no%,"Info-Bulle" top no%,120 : left no%,10 : width no%,160 : height no%,610 no% = no% + 1 : alpha no% : parent no%,no1% top no%,20 : left no%,10 : caption no%,"Origine X:" no% = no% + 1 : edit no% : parent no%,no1% : no_bulle_x% = no% top no%,20 : left no%,80 : width no%,30 : text no%,"150" no% = no% + 1 : alpha no% : parent no%,no1% top no%,50 : left no%,10 : caption no%,"Origine Y:" no% = no% + 1 : edit no% : parent no%,no1% : no_bulle_y% = no% top no%,50 : left no%,80 : width no%,30 : text no%,"150" no% = no% + 1 : alpha no% : parent no%,no1% top no%,90 : left no%,10 : caption no%,"Hauteur:" no% = no% + 1 : edit no% : parent no%,no1% : no_bulle_h% = no% top no%,90 : left no%,80 : width no%,30 : text no%,"100" no% = no% + 1 : alpha no% : parent no%,no1% top no%,120 : left no%,10 : caption no%,"Largeur:" no% = no% + 1 : edit no% : parent no%,no1% : no_bulle_w% = no% top no%,120 : left no%,80 : width no%,30 : text no%,"200" no% = no% + 1 : alpha no% : parent no%,no1% top no%,160 : left no%,10 : caption no%,"Dép. flèche" no% = no% + 1 : combo no% : parent no%,no1% : no_pointe_org% = no% top no%,160 : left no%,80 : width no%,70 item_add no%,"Haut" : item_add no%,"Droite" item_add no%,"Bas" : item_add no%,"Gauche" text no%,"Bas" no% = no% + 1 : alpha no% : parent no%,no1% top no%,190 : left no%,10 : caption no%,"Pointe X:" no% = no% + 1 : edit no% : parent no%,no1% : no_pointe_x% = no% top no%,190 : left no%,80 : width no%,30 : text no%,"150" no% = no% + 1 : alpha no% : parent no%,no1% top no%,220 : left no%,10 : caption no%,"Pointe Y:" no% = no% + 1 : edit no% : parent no%,no1% : no_pointe_Y% = no% top no%,220 : left no%,80 : width no%,30 : text no%,"365" no% = no% + 1 : alpha no% : parent no%,no1% top no%,260 : left no%,10 : caption no%,"Bulle:" no% = no% + 1 : alpha no% : parent no%,no1% top no%,280 : left no%,10 : caption no%,"R" no% = no% + 1 : alpha no% : parent no%,no1% top no%,280 : left no%,30 : caption no%,"G" no% = no% + 1 : alpha no% : parent no%,no1% top no%,280 : left no%,50 : caption no%,"B" no% = no% + 1 : alpha no% : parent no%,no1% top no%,260 : left no%,90 : caption no%,"Fond:" no% = no% + 1 : alpha no% : parent no%,no1% top no%,280 : left no%,90 : caption no%,"R" no% = no% + 1 : alpha no% : parent no%,no1% top no%,280 : left no%,110 : caption no%,"G" no% = no% + 1 : alpha no% : parent no%,no1% top no%,280 : left no%,130 : caption no%,"B" no% = no% + 1 : scroll_bar no% : parent no%,no1% : no_bulle_R% = no% top no%,300 : left no%,10 : vertical no% : min no%,0 : max no%,255 position no%,255 : on_change no%,chg_bulle no% = no% + 1 : scroll_bar no% : parent no%,no1% : no_bulle_G% = no% top no%,300 : left no%,30 : vertical no% : min no%,0 : max no%,255 position no%,255 : on_change no%,chg_bulle no% = no% + 1 : scroll_bar no% : parent no%,no1% : no_bulle_B% = no% top no%,300 : left no%,50 : vertical no% : min no%,0 : max no%,255 position no%,0 : on_change no%,chg_bulle no% = no% + 1 : picture no% : parent no%,no1% : no_apercu% = no% top no%,430 : left no%,10 : width no%,60 : height no%,50 color no%,position(no_bulle_R%),position(no_bulle_G%),position(no_bulle_B%)
no% = no% + 1 : scroll_bar no% : parent no%,no1% : no_fond_R% = no% top no%,300 : left no%,90 : vertical no% : min no%,0 : max no%,255 position no%,127 : on_change no%,chg_fond no% = no% + 1 : scroll_bar no% : parent no%,no1% : no_fond_G% = no% top no%,300 : left no%,110 : vertical no% : min no%,0 : max no%,255 position no%,127 : on_change no%,chg_fond no% = no% + 1 : scroll_bar no% : parent no%,no1% : no_fond_B% = no% top no%,300 : left no%,130 : vertical no% : min no%,0 : max no%,255 position no%,127 : on_change no%,chg_fond no% = no% + 1 : picture no% : parent no%,no1% : no_fond% = no% top no%,430 : left no%,90 : width no%,60 : height no%,50 color no%,position(no_fond_R%),position(no_fond_G%),position(no_fond_B%) no% = no% + 1 : check no% : parent no%,no1% : no_bulle_arrondi% = no% top no%,500 : left no%,10 : caption no%,"Arrondi"
no% = no% + 1 : button no% : parent no%,no1% : on_click no%,dessiner top no%,530 : left no%,10 : caption no%,"Dessiner" no% = no% + 1 : button no% : parent no%,no1% : on_click no%,enregistrer top no%,570 : left no%,10 : caption no%,"Enregistrer"
no% = no% + 1 : button no% : caption no%,"Texte" top no%,10 : left no%,200 : on_click no%,texte no% = no% + 1 : alpha no% : no_transp_color% = no% top no%,10 : left no%,320 f$ = str$(position(no_fond_R%)) f$ = f$ + "," + str$(position(no_fond_G%)) f$ = f$ + "," + str$(position(no_fond_B%)) caption no%,"Couleur fond: "+f$ no% = no% + 1 : form no% : hide no% : no1% = no% : no_texte% = no% top no%,100 : left no%,300 width no%,300 : height no%,400 : on_close no%,close_texte caption no%,"Texte à placer dans l'Info-Bulle" no% = no% + 1 : check no% : parent no%,no1% : width no%,250 : no_texte_go% = no% top no%,10 : left no%,10 : caption no%,"Placer le texte dans la bulle" no% = no% + 1 : memo no% : parent no%,no1% : no_texte_memo% = no% top no%,40 : left no%,10 : width no%,250 : height no%,200 no% = no% + 1 : combo no% : parent no%,no1% : no_texte_font% = no% top no%,250 : left no%,10 : font_names_load no% text no%,"Courier" no% = no% + 1 : combo no% : parent no%,no1% : no_texte_size% = no% top no%,250 : left no%,160 : width no%,40 item_add no%,"8" : item_add no%,"10" : item_add no%,"12" : item_add no%,"16" text no%,"10" no% = no% + 1 : check no% : parent no%,no1% : no_texte_bold% = no% top no%,280 : left no%,10 : caption no%,"Gras" no% = no% + 1 : check no% : parent no%,no1% : no_texte_ital% = no% top no%,280 : left no%,80 : caption no%,"Italique" no% = no% + 1 : check no% : parent no%,no1% : no_texte_under% = no% top no%,280 : left no%,160 : caption no%,"Souligné" no% = no% + 1 : button no% : parent no%,no1%: on_click no%,texte_no top no%,320 : left no%,10 : caption no%,"Abandon" no% = no% + 1 : button no% : parent no%,no1% : on_click no%,texte_show top no%,320 : left no%,100 : caption no%,"Montrer" no% = no% + 1 : button no% : parent no%,no1% : on_click no%,texte_ok top no%,320 : left no%,190 : caption no%,"Valider"
no% = no% + 1 : no_bulle% = no% return chg_bulle: color no_apercu%,position(no_bulle_R%),position(no_bulle_G%),position(no_bulle_B%) return chg_fond: color no_fond%,position(no_fond_R%),position(no_fond_G%),position(no_fond_B%) f$ = str$(position(no_fond_R%)) f$ = f$ + "," + str$(position(no_fond_G%)) f$ = f$ + "," + str$(position(no_fond_B%)) caption no_transp_color%,"Couleur fond: "+f$ return
dessiner: if object_exists(no_bulle%)=1 then delete no_bulle% picture no_bulle% : top no_bulle%,40 left no_bulle%,200 width no_bulle%,val(text$(no_picture_w%)) height no_bulle%,val(text$(no_picture_h%))
bulle_x% = val(text$(no_bulle_x%)) bulle_y% = val(text$(no_bulle_y%)) bulle_w% = val(text$(no_bulle_w%)) bulle_h% = val(text$(no_bulle_h%)) bulle_pointe_org% = item_index(no_pointe_org%) if bulle_pointe_org%=0 then bulle_pointe_org% = 3 bulle_pointe_x% = val(text$(no_pointe_x%)) bulle_pointe_y% = val(text$(no_pointe_y%)) bulle_color_R% = position(no_bulle_R%) bulle_color_G% = position(no_bulle_G%) bulle_color_B% = position(no_bulle_B%) fond_color_R% = position(no_fond_R%) fond_color_G% = position(no_fond_G%) fond_color_B% = position(no_fond_B%) bulle_arrondi% = checked(no_bulle_arrondi%)
gosub d_bulle gosub d_texte
end
d_bulle: color no_bulle%,fond_color_R%,fond_color_G%,fond_color_B% 2d_target_is no_bulle% 2d_pen_width 1 2d_fill_color bulle_color_R%, bulle_color_G%, bulle_color_B% if bulle_arrondi%=0 2d_rectangle bulle_x%,bulle_y%,bulle_x%+bulle_w%-1,bulle_y%+bulle_h%-1 else 2d_circle bulle_x%+10,bulle_y%+10,10 2d_circle bulle_x%+bulle_w%-1-10,bulle_y%+10,10 2d_circle bulle_x%+10,bulle_y%+bulle_h%-1-10,10 2d_circle bulle_x%+bulle_w%-1-10,bulle_y%+bulle_h% -1-10,10 2d_rectangle bulle_x%+10,bulle_y%,bulle_x%+bulle_w% -1-10,bulle_y%+bulle_h%-1 2d_rectangle bulle_x%,bulle_y%+10,bulle_x%+bulle_w% -1,bulle_y%+bulle_h%-1-10 2d_pen_color bulle_color_R%, bulle_color_G%, bulle_color_B% 2d_line bulle_x%+10,bulle_y%+1,bulle_x%+10,bulle_y%+bulle_h%-1-1 2d_line bulle_x%+bulle_w%-1-10-1,bulle_y%+1,bulle_x%+bulle_w%-1-10-1,bulle_y%+bulle_h%-1-1 2d_line bulle_x%+1,bulle_y%+10,bulle_x%+bulle_w%-1-1,bulle_y%+10 2d_line bulle_x%+1,bulle_y%+bulle_h%-1-10-1,bulle_x%+bulle_w%-1-1,bulle_y%+bulle_h%-10-1-1 2d_pen_color 0,0,0 end_if
select bulle_pointe_org% case 1 : ' ligne du haut k% = bulle_w%/7 x1% = bulle_x% + 3*k% y1% = bulle_y% x2% = x1% + k% y2% = y1% fx% = x1% + k%/2 fy% = y1% - 2 xd% = 0 yd% = 0 case 2 : ' ligne à droite k% = bulle_h%/5 x1% = bulle_x% + bulle_w% - 1 y1% = bulle_y% + 2*k% x2% = x1% y2% = y1% + k% fx% = x1% + 2 fy% = y1% + k%/2 xd% = 0 - 1 yd% = 0 case 3 : ' ligne du bas k% = bulle_w%/7 x1% = bulle_x% + 3*k% y1% = bulle_y% + bulle_h% - 1 x2% = x1% + k% y2% = y1% fx% = x1% + k%/2 fy% = y1% + 2 xd% = 0 yd% = 0 - 1 case 4 : ' ligne à gauche k% = bulle_h%/5 x1% = bulle_x% y1% = bulle_y% + 2*k% x2% = x1% y2% = y1% + k% fx% = x1% - 2 fy% = y1% + k%/2 xd% = 0 yd% = 0 end_select 2d_poly_from x1%,y1% 2d_poly_to bulle_pointe_x%,bulle_pointe_y% 2d_poly_to x2%+xd%,y2%+yd% 2d_flood fx%,fy%, bulle_color_R%, bulle_color_G%, bulle_color_B% 2d_pen_color bulle_color_R%, bulle_color_G%, bulle_color_B% 2d_line x1%+xd%,y1%+yd%, x2%+xd%,y2%+yd% 2d_pen_color bulle_color_R%, bulle_color_G%, bulle_color_B% 2d_point 0,val(text$(no_picture_h%)) 2d_pen_color 0,0,0 2d_target_is 0 return d_texte: if checked(no_texte_go%)=0 then return print_target_is no_bulle% font_name no_bulle%,text$(no_texte_font%) font_size no_bulle%,val(text$(no_texte_size%)) if checked(no_texte_bold%)=1 font_bold no_bulle% else font_bold_off no_bulle% end_if if checked(no_texte_ital%)=1 font_italic no_bulle% else font_italic_off no_bulle% end_if if checked(no_texte_under%)=1 font_underline no_bulle% else font_underline_off no_bulle% end_if y1% = (val(text$(no_bulle_h%))-texte_h%)/2 + val(text$(no_bulle_y%)) x1% = (val(text$(no_bulle_w%))-texte_w%)/2 + val(text$(no_bulle_x%)) print_locate x1%,y1% for k%=1 to count(no_texte_memo%) print item_read$(no_texte_memo%,k%) print_x_locate x1% next k% print_target_is 0 return enregistrer: if object_exists(no_bulle%)=0 message "Il n'y a rien à enregistrer." return end_if f$ = file_name$(no_save%) if f$="_" then return if right$(f$,4)<>".bmp" then f$ = f$ + ".bmp" file_save no_bulle%,f$ return
texte: inactive 0 texte_ok% = 0 show no_texte% return close_texte: if texte_ok%=1 then gosub texte_ok active 0 to_foreground 0 return texte_ok: if checked(no_texte_go%)=0 hide no_texte% active 0 to_foreground 0 return end_if if count(no_texte_memo%)=0 message "Il n'y a pas de texte à placer." mark_off no_texte_go% hide no_texte% active 0 to_foreground 0 return end_if font_name no_essai%,text$(no_texte_font%) font_size no_essai%,val(text$(no_texte_size%)) if checked(no_texte_bold%)=1 font_bold no_essai% else font_bold_off no_essai% end_if if checked(no_texte_ital%)=1 font_italic no_essai% else font_italic_off no_essai% end_if if checked(no_texte_under%)=1 font_underline no_essai% else font_underline_off no_essai% end_if texte_h% = 0 texte_w% = 0 for k%=1 to count(no_texte_memo%) f$ = item_read$(no_texte_memo%,k%) n% = text_height(f$,no_essai%) if n%>texte_h% then texte_h% = n% n% = text_width(f$,no_essai%) if n%>texte_w% then texte_w% = n% next k% texte_h% = (texte_h%+2)*count(no_texte_memo%) - 2 if texte_h%>val(text$(no_bulle_h%))-4 message "Le texte est trop haut." mark_off no_texte_go% return end_if if texte_w%>val(text$(no_bulle_w%))-4 message "Le texte est trop large." mark_off no_texte_go% return end_if message "Le texte sera intégré." hide no_texte% active 0 to_foreground 0 return texte_no: hide no_texte% mark_off no_texte_go% active 0 to_foreground 0 return texte_show: font_name no_texte_memo%,text$(no_texte_font%) font_size no_texte_memo%,val(text$(no_texte_size%)) if checked(no_texte_bold%)=1 font_bold no_texte_memo% else font_bold_off no_texte_memo% end_if if checked(no_texte_ital%)=1 font_italic no_texte_memo% else font_italic_off no_texte_memo% end_if if checked(no_texte_under%)=1 font_underline no_texte_memo% else font_underline_off no_texte_memo% end_if return
D'ailleurs, voici l'application d'une info-bulle avec texte à la capture d'écran du programme InfoBulle: Joli, non ? EDIT J'ai intégré une modif qui permet de reconnaitre la couleur de fond comme couleur de transparence, MEME si le pixel en bas à gauche est touché par le dessin. | |
| | | Contenu sponsorisé
| Sujet: Re: Outil de création d'info-bulles | |
| |
| | | | Outil de création d'info-bulles | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |