Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
Sujet: Exemple de potentiomètre rectiligne Dim 24 Avr 2022 - 10:00
Bonjour à tous !
Voici un exemple de création d'un potentiomètre rectiligne avec la gestion du déplacement de son curseur.
Code:
' Exemple de potentiometre rectiligne ' Marc - Avril 2022 ' programme en langage Panoramic dim ySouris%, valeur, null% label deplacerBouton
color 0,80,80,200 potentiometre(330,125) :' en paramètres (x,y) position du dessin du potentiomètre
' affichage en % de la position du bouton alpha 10 top 10,185 left 10,185 font_size 10,14 font_color 10,255,255,255
' prépositionnement du bouton et affichage valeur valeur = 27 sprite_y_position 2,150-(valeur*3/2) caption 10,str$(valeur) + "%"
end
sub potentiometre(x%,y%) dim_local i%, e%
' objet PICTURE servant de planche à dessins create_hide picture 1 width 1,60 height 1,165 2d_target_is 1 create_show
' objet IMAGE pour la copie des dessins effecués image 2
' dessiner le décor de fond du potentiomètre color 1,80,80,200 2d_pen_color 255,255,255 e% = 7 for i% = 1 to 11 2d_line 0,e%,60,e% e% = e% + 15 next i% 2d_pen_color 0,0,1 2d_fill_color 0,0,1 2d_rectangle 27,0,33,165
' copie du dessin effectué en mémoire dans l'objet IMAGE 2 2d_image_copy 2,0,0,60,165
' Corps du potentiomètre scene2d 3 top 3,y% left 3,x% width 3,60 height 3,165 on_mouse_down 3,deplacerBouton
' creer sprite servant d'image de fond et copier le dessin dessus sprite 1 sprite_image_load 1,2
' dessiner le bouton du potentiomètre color 1,0,0,0 :' effacer planche à dessin (picture 1) 2d_pen_color 50,50,50 2d_fill_color 50,50,50 2d_rectangle 0,0,44,15 2d_pen_color 255,255,255 2d_fill_color 255,255,255 2d_rectangle 0,6,44,9 2d_pen_color 0,0,0 2d_point 0,0 2d_point 43,14 2d_point 0,14 2d_point 43,0
2d_image_copy 2,0,0,44,15
' creer le sprite du bouton et copier le dessin dessus sprite_create_hide sprite 2 sprite_image_load 2,2 sprite_position 2,8,0 sprite_show 2 end_sub
deplacerBouton: off_mouse_down 3 ' inhibition bouton droit souris if mouse_right_down(3)=1 on_mouse_down 3,deplacerBouton return end_if
' raffraichissement de l'état des boutons de la souris null% = mouse_left_up(3) null% = mouse_left_down(3)
while mouse_left_up(3) = 0 :' Tant que le bouton gauche souris est appuyé ySouris% = mouse_y_position(3) if ySouris% < 0 :' limite haute sprite_y_position 2,0 end_if if ySouris% > 160 sprite_y_position 2,150 :' limite basse end_if if ySouris% > 0 and ySouris% < 150 sprite_y_position 2,ySouris% end_if valeur = sprite_y_position(2) valeur = 150 - valeur valeur = int(valeur * 2/3) caption 10,str$(valeur) + "%" end_while on_mouse_down 3,deplacerBouton return
Le corps du potentiomètre est une scene2D ornée d'un sprite décoratif qui représente la sérigraphie. Le bouton est un sprite.
Cet exemple constitue une base à personnaliser (dimensions, couleurs, forme du bouton, ...)
Bonne journée à tous !
EDIT : j'ai ajouté un autre exemple un peu plus bas dans ce fil de discussion.
EDIT du 10/05/2022 : nouvel exemple de 3 potentiomètres horizontaux ajouté un peu plus bas...
Dernière édition par Marc le Lun 16 Mai 2022 - 22:39, édité 3 fois
Yannick aime ce message
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
Sujet: Re: Exemple de potentiomètre rectiligne Dim 24 Avr 2022 - 10:26
Bonjour Marc,
Toujours innovant et sympa ! Merci.
Bon après... Plus de 100 lignes pour un Track_bar et sa gestion c'est pas un peu beaucoup ?! L'intérêt étant bien entendu de quitter les sentiers battus et ça j'avoue c'est génial.
Et puis c'est vrai que si l'on veux faire plus compact en terme de programme, on peux toujours utiliser les objets IMAGE ou BUTTON_PICTURE et là c'est encore plus simple ! Mais ça c'est une autre histoire...
Juste pour corser l'affaire, il serait intéressant de pouvoir utiliser l'objet horizontalement ou verticalement. Bon ok je sors....
Encore merci pour le partage Marc et bon dimanche à tous !
Yannick aime ce message
Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
Sujet: Re: Exemple de potentiomètre rectiligne Lun 25 Avr 2022 - 23:18
Minibug a écrit:
Toujours innovant et sympa !...
Merci Minibug !
En partant du code de "base" ci-dessus, j'ai réalisé un autre exemple de potentiomètre rectiligne :
Code:
' Modèle de potentiomètre rectiligne ' Marc - Avril 2022 ' Ecrit en langage Panoramic dim ySouris%, valeur, null% label deplacerBouton
color 0,10,10,10 potentiometre(330,125) :' en paramètres (x,y) position du dessin du potentiomètre
' affichage en % de la position du bouton alpha 10 top 10,185 left 10,185 font_size 10,14 font_color 10,255,255,255
' prépositionnement du bouton et affichage valeur valeur = 26 sprite_y_position 2,155-(valeur * 0.745) caption 10,str$(valeur) + "%"
end ' ------------------------------------------------------------------------------ sub potentiometre(x%,y%) dim_local i%, e%, c%, l%,x1%,y1%
' objet PICTURE servant de planche à dessins create_hide picture 1 width 1,54 height 1,230 2d_target_is 1 create_show
' objet IMAGE pour la copie des dessins effecués image 2
' dessiner le décor de fond du potentiomètre color 1,66,63,70 for i% = 0 to 1000 c% = int(50+rnd(30)) l% = int(rnd(10)) x1% = int(rnd(55)) y1% = int(rnd(265)) 2d_pen_color c%,c%,c% 2d_line x1%,y1%,x1%+l%,y1% next i%
' sérigraphie 2d_pen_color 180,180,180 e% = 39 for i% = 1 to 10 2d_line 12,e%,42,e% e% = e% + 15 next i%
' creer le sprite du bouton et copier le dessin dessus sprite_create_hide sprite 2 sprite_image_load 2,2 sprite_position 2,19,20 sprite_show 2 end_sub ' ------------------------------------------------------------------------------ deplacerBouton: off_mouse_down 3 ' inhibition bouton droit souris if mouse_right_down(3)=1 on_mouse_down 3,deplacerBouton return end_if
' raffraichissement de l'état des boutons de la souris null% = mouse_left_up(3) null% = mouse_left_down(3)
while mouse_left_up(3) = 0 :' Tant que le bouton gauche souris est appuyé ySouris% = mouse_y_position(3)-19 if ySouris% < 20 :' limite haute sprite_y_position 2,20 end_if if ySouris% > 155 sprite_y_position 2,155 :' limite basse end_if if ySouris% > 20 and ySouris% < 155 sprite_y_position 2,ySouris% end_if valeur = sprite_y_position(2) valeur = 155 - valeur valeur = int(valeur * 0.745) caption 10,str$(valeur) + "%" end_while on_mouse_down 3,deplacerBouton return
Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
Sujet: Re: Exemple de potentiomètre rectiligne Mar 10 Mai 2022 - 12:35
Bonjour à tous !
Voici un nouvel exemple de création de potentiomètres. Le design moderne est emprunté à Microsoft Windows 10.
Le code-source est commenté. Pour cet exemple, j'ai pris un débattement des curseurs de 360 pixels.
Code:
' Exemple de 3 potentiomètres horizontaux ' Marc - Mai 2022 ' Ecrit en langage Panoramic
dim null%, xSouris%, p1%,p2%,p3%
label reglageP1, reglageP2, reglageP3
interfaceUtilisateur()
end ' ------------------------------------------------------------------------------ sub interfaceUtilisateur() width 0,width(0) - width_client(0) + 540 height 0,height(0) - height_client(0) + 240 left 0,(screen_x - width(0)) / 2 top 0,(screen_y - height(0)) / 2 color 0,255,255,255 caption 0,"PANORAMIC Exemple de trois potentiomètres horizontaux"
' PICTURE non visible servant de planche à dessins create_hide picture 1 create_show
' zones mémoire pour stocker les dessins image 2 image 3
dessinerModelePotentiometre()
' creerPotentiometre(numméro d'objet,coordonnée en x, coordonnée en y) creerPotentiometre(30,50,50) creerPotentiometre(35,50,100) creerPotentiometre(40,50,150)
' creer affichage de la position des curseurs des potentiomètres alpha 45 top 45,55 left 45,450 font_size 45,18 caption 45,"0"
alpha 46 top 46,105 left 46,450 font_size 46,18 caption 46,"0"
alpha 47 top 47,155 left 47,450 font_size 47,18 caption 47,"0"
' dessiner le décor de fond du potentiomètre width 1,368 height 1,44 color 1,255,255,255 2d_pen_color 153,153,153 2d_rectangle 0,21,368,23
' copie du dessin effectué (décor de fond) en mémoire dans l'objet IMAGE 2 2d_image_copy 2,0,0,368,44
' dessiner le bouton du potentiomètre color 1,0,0,0 :' effacer planche à dessin (picture 1) 2d_pen_color 0,120,215 2d_fill_color 0,120,215 2d_rectangle 0,21,368,23 2d_rectangle 361,11,367,33 2d_line 362,10,366,10 2d_line 360,12,360,32 2d_line 367,12,367,32 2d_line 362,33,366,33
' copie du dessin effectué (bouton) en mémoire dans l'objet IMAGE 3 2d_image_copy 3,0,0,368,44 end_sub ' ------------------------------------------------------------------------------ sub creerPotentiometre(n%,x%,y%) ' Corps du potentiomètre scene2d n% top n%,y% left n%,x% width n%,368 height n%,44 sprite_target_is n%
sprite_create_hide
' creer sprite servant d'image de fond et copier le dessin dessus sprite n% sprite_image_load n%,2 sprite_position n%,0,0
' creer le sprite du bouton et copier le dessin dessus sprite n%+1 sprite_image_load n%+1,3 sprite_position n%+1,-360,0
Edit du 16/05/2022 J'ai rectifié deux petites erreurs : pour les potentiomètres 2 et 3, la butée inférieure était décalée de 5 pixels. Le code-source a été rectifié.