Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Comment construire un bouton avec un picture Mer 20 Nov 2013 - 2:17 | |
| Sur mon système, sous XP pro SP3, les boutons de Panoramic ne me plaisent pas vraiment. Ils ont une forme de rectangle arrondi comme ceci: Pour ma part, je préfère les boutons avec un rectangle franc, en relief, comme ceux des barres d'outils. J'ai donc trouvé un moyen de dessiner ces images dans un picture caché, de les mettre de côté dans des images, puis de les charger dans les picture servant de bouton. Il faut bien sûr avoir 2 images par bouton: bouton sorti et bouton enfoncé. Pour ne pas avoir à faire une image par bouton, j'écris le libellé du bouton au centre du bouton, après chaque changement d'état. Et parlons-en: le changement d'état se fait par le remplacement de l'image du bouton sorti par l'image du bouton enfoncé, puis une attente de 150 millisecondes, puis remise de l'image du bouton sorti. Tout cela donne une assez bonne simulation d'un bouton texte, et c'est paramétré pour n'importe quelle largeur et hauteur. Les images des boutons se dessinent par des fonctions 2d_xxx, et on n'a pas besoin de fichiers bmp ou jpg. Voici l'image obtenu, par l'exemple d'une calculette simple: Et voici le code, utilisant KGF_OBJ.bas: - Code:
-
' calculette.bas
label click dim button_out%, button_in%, boutons%(15) dim n%, r%, g%, b%, s$, affichage%, sauve$, oper%, nouveau% sauve$ = "0" : nouveau% = 1
height 0,560 : width 0,430
creer_images()
xPicture(110,10,100,100,0) : boutons%(1) = no% : charger_image(no%,button_out%) couleur_remplissage(no%) on_click no%,click : afficher_libelle(no%,"1") xPicture(110,110,100,100,0) : boutons%(2) = no% : charger_image(no%,button_out%) couleur_remplissage(no%) on_click no%,click : afficher_libelle(no%,"2") xPicture(110,210,100,100,0) : boutons%(3) = no% : charger_image(no%,button_out%) couleur_remplissage(no%) on_click no%,click : afficher_libelle(no%,"3")
xPicture(210,10,100,100,0) : boutons%(4) = no% : charger_image(no%,button_out%) couleur_remplissage(no%) on_click no%,click : afficher_libelle(no%,"4") xPicture(210,110,100,100,0) : boutons%(5) = no% : charger_image(no%,button_out%) couleur_remplissage(no%) on_click no%,click : afficher_libelle(no%,"5") xPicture(210,210,100,100,0) : boutons%(6) = no% : charger_image(no%,button_out%) couleur_remplissage(no%) on_click no%,click : afficher_libelle(no%,"6")
xPicture(310,10,100,100,0) : boutons%(7) = no% : charger_image(no%,button_out%) couleur_remplissage(no%) on_click no%,click : afficher_libelle(no%,"7") xPicture(310,110,100,100,0) : boutons%(8) = no% : charger_image(no%,button_out%) couleur_remplissage(no%) on_click no%,click : afficher_libelle(no%,"8") xPicture(310,210,100,100,0) : boutons%(9) = no% : charger_image(no%,button_out%) couleur_remplissage(no%) on_click no%,click : afficher_libelle(no%,"9")
xPicture(410,10,100,100,0) : boutons%(10) = no% : charger_image(no%,button_out%) couleur_remplissage(no%) on_click no%,click : afficher_libelle(no%,"C") xPicture(410,110,100,100,0) : boutons%(0) = no% : charger_image(no%,button_out%) couleur_remplissage(no%) on_click no%,click : afficher_libelle(no%,"0") xPicture(410,210,100,100,0) : boutons%(11) = no% : charger_image(no%,button_out%) couleur_remplissage(no%) on_click no%,click : afficher_libelle(no%,",")
xPicture(110,310,100,100,0) : boutons%(12) = no% : charger_image(no%,button_out%) couleur_remplissage(no%) s$ = "+ =" on_click no%,click : afficher_libelle(no%,s$) xPicture(210,310,100,100,0) : boutons%(13) = no% : charger_image(no%,button_out%) couleur_remplissage(no%) on_click no%,click : afficher_libelle(no%,"-") xPicture(310,310,100,100,0) : boutons%(14) = no% : charger_image(no%,button_out%) couleur_remplissage(no%) on_click no%,click : afficher_libelle(no%,"*") xPicture(410,310,100,100,0) : boutons%(15) = no% : charger_image(no%,button_out%) couleur_remplissage(no%) on_click no%,click : afficher_libelle(no%,"/")
xEdit(30,10,400,0,1) : affichage% = no% : font_size no%,16 : font_bold no% text no%,"0"
end
' ************** construire les images des boutons sub creer_images() xPicture(10,10,100,100,0) : hide no% dessiner_out(no%) : sauver_image(no%) : button_out% = no% xPicture(10,300,100,100,0) : hide no% dessiner_in(no%) : sauver_image(no%) : button_in% = no% end_sub
' ************** construire l'image du bouton sorti sub dessiner_out(n%) dim_local w%,h% w% = width(n%) : h% = height(n%) 2d_target_is n% ' rectangle extérieur 2d_fill_color 236,233,216 2d_pen_color 0,0,0 2d_rectangle 0,0,w%,h% display ' intérieur bas/droite -1 2d_pen_color 113,110,103 2d_poly_from 1,h%-2 2d_poly_to w%-2,h%-2 2d_poly_to w%-2,1 display ' intérieur bas/droite -2 2d_pen_color 169,165,154 2d_poly_from 2,h%-3 2d_poly_to w%-3,h%-3 2d_poly_to w%-3,2 display ' intérieur gauche/haut -1 2d_pen_color 255,255,245 2d_poly_from 1,h%-3 2d_poly_to 1,1 2d_poly_to w%-3,1 display ' intérieur gauche/haut -2 2d_pen_color 241,239,216 2d_poly_from 2,h%-4 2d_poly_to 2,2 2d_poly_to w%-4,2 display end_sub
' ************** construire l'image du bouton enfoncé sub dessiner_in(n%) dim_local w%,h% w% = width(n%) : h% = height(n%) 2d_target_is n% ' rectangle extérieur 2d_fill_color 236,233,216 2d_pen_color 0,0,0 2d_rectangle 0,0,w%,h% display ' rectangle intérieur 2d_pen_color 170,167,158 2d_rectangle 1,1,w%-1,h%-1 display end_sub
' ************** sauver l'image du bouton sub sauver_image(n%) xImage() 2d_target_is n% 2d_image_copy no%,0,0,width(n%),height(n%) end_sub
' ************** charger l'image i% dans le bouton n% sub charger_image(n%,i%) 2d_target_is n% 2d_image_paste i%,0,0 end_sub
' ************** afficher ke libellé des boutons sub afficher_libelle(n%,c$) font_size n%,24 : font_bold n% print_target_is n% print_x_locate (width(n%)-text_width(c$,n%))/2 print_y_locate (height(n%)-text_height(c$,n%))/2 print c$ end_sub
' ************** pour un fond transparent pour 2d_print sub couleur_remplissage(n%) r% = color_pixel_red(no%,50,50) g% = color_pixel_green(no%,50,50) b% = color_pixel_blue(no%,50,50) 2d_fill_color r%,g%,b% end_sub
' ************** exécuter une des opérations sub executer_operation() if nouveau%=1 then exit_sub if oper%=1 then text affichage%,str$(val(sauve$)+val(text$(affichage%))) if oper%=2 then text affichage%,str$(val(sauve$)-val(text$(affichage%))) if oper%=3 then text affichage%,str$(val(sauve$)*val(text$(affichage%))) if oper%=4 then text affichage%,str$(val(sauve$)/val(text$(affichage%))) nouveau% = 1 oper% = 0 end_sub
' ************** clic sur un bouton click: 2d_target_is number_click 2d_image_paste button_in%,0,0 display pause 150 2d_image_paste button_out%,0,0 for n%=0 to 15 if boutons%(n%)=number_click if n%<10 if nouveau%=1 sauve$ = text$(affichage%) text affichage%,"0" nouveau% = 0 end_if text affichage%,str$(val(text$(affichage%) + str$(n%))) afficher_libelle(number_click,str$(n%)) return end_if if n%=10 if text$(affichage%)="0" sauve$ = "0" oper% = 0 end_if text affichage%,"0" afficher_libelle(number_click,"C") return end_if if n%=11 if nouveau%=1 sauve$ = text$(affichage%) text affichage%,"0" nouveau% = 0 end_if text affichage%,text$(affichage%) + "." afficher_libelle(number_click,",") return end_if if n%=12 executer_operation() oper% = 1 s$ = "+ =" afficher_libelle(number_click,s$) return end_if if n%=13 executer_operation() oper% = 2 afficher_libelle(number_click,"-") return end_if if n%=14 executer_operation() oper% = 3 afficher_libelle(number_click,"*") return end_if if n%=15 executer_operation() oper% = 4 afficher_libelle(number_click,"/") return end_if end_if next n% return
#INCLUDE "KGF_OBJ.bas"
| |
|