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 |
|
|
| Tracer une grille n'importe où sur l'écran | |
| | Auteur | Message |
---|
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Tracer une grille n'importe où sur l'écran Sam 18 Nov 2017 - 23:48 | |
| Donc sur tout l'écran Windows. Ça peut servir pour superposer à une image ou une structure quelconque affichée, pour évaluation, mesures, etc.. Il faut définir préalablement la position en X,Y, la largeur et la hauteur de la grille, et son pas en pixels. L'épaisseur du trait est implicitement de 1 pixel et sa couleur rouge, on peut le modifier dans l'appel à la sub (s/p Desgril). Avec un exemple d'appel. Bouton 'OK' pour tracer la grille définie, bouton 'Raz' pour effacer la grille existante et en créer une autre, pour ajustage. - Code:
-
' Tracer une grille n'importe où sur l'écran LABEL Chc,Desgril DIM x%,y%,w%,h%,e%,r%,g%,b%,rgb%,pas%,i%,a$ BORDER_SMALL 0: i% = WIDTH(0)-WIDTH_CLIENT(0): WIDTH 0,i%+365 i% = HEIGHT(0)-HEIGHT_CLIENT(0): HEIGHT 0,i%+56 FONT_NAME 0,"Lucida Console": FONT_SIZE 0,10 CAPTION 0," - GRILLE SUR L' ÉCRAN -": COLOR 0,164,255,255 a$ = "X= Y= W= H="+CHR$(10)+CHR$(10)+"pas= et=" ALPHA 1: TOP 1,5: CAPTION 1,a$: FONT_BOLD 1 i% = 21: ' position X, position Y, largeur, hauteur, pas, épaisseur trait SPIN 2: TOP 2,TOP(1)-2: LEFT 2,i%: WIDTH 2,60 SPIN 3: TOP 3,TOP(2): LEFT 3,LEFT(2)+WIDTH(2)+i%: WIDTH 3,WIDTH(2) SPIN 4: TOP 4,TOP(2): LEFT 4,LEFT(3)+WIDTH(3)+i%: WIDTH 4,WIDTH(2) SPIN 5: TOP 5,TOP(2): LEFT 5,LEFT(4)+WIDTH(4)+i%: WIDTH 5,WIDTH(2) SPIN 6: TOP 6,TOP(2)+27: LEFT 6,LEFT(2)+16: WIDTH 6,WIDTH(2)-15: POSITION 6,25 SPIN 7: TOP 7,TOP(6): LEFT 7,LEFT(6)+WIDTH(6)+i%+6: WIDTH 7,40: POSITION 7,1 BUTTON 10: TOP 10,3: WIDTH 10,34: HEIGHT 10,50: LEFT 10,LEFT(5)+63 FONT_SIZE 10,12: CAPTION 10,"OK": ON_CLICK 10,Desgril PICTURE 11: TOP 11,TOP(6)+3: LEFT 11,LEFT(7)+WIDTH(7)+5: WIDTH 11,42: HEIGHT 11,15 COLOR 11,255,0,0: ' couleur active PICTURE 12: TOP 12,TOP(11)-4: LEFT 12,LEFT(11)+WIDTH(11)+4: WIDTH 12,122 HEIGHT 12,25: ON_CLICK 12,Chc: 2D_TARGET_IS 12: ' palette de 6 couleurs FOR i% = 0 TO 5 SELECT i% CASE 0: 2D_FILL_COLOR 0,0,0: ' noir CASE 1: 2D_FILL_COLOR 255,255,255: ' blanc CASE 2: 2D_FILL_COLOR 255,0,0: ' rouge CASE 3: 2D_FILL_COLOR 0,255,0: ' vert CASE 4: 2D_FILL_COLOR 0,0,255: ' bleu CASE 5: 2D_FILL_COLOR 255,255,0: ' jaune END_SELECT x% = i%*20: 2D_RECTANGLE x%,0,x%+22,24 NEXT i% END ' ============================================================================== Chc: ' Choix couleur de trait x% = MOUSE_X_LEFT_DOWN(12): y% = MOUSE_Y_LEFT_DOWN(12) r% = COLOR_PIXEL_RED(12,x%,y%): g% = COLOR_PIXEL_GREEN(12,x%,y%) b% = COLOR_PIXEL_BLUE(12,x%,y%): COLOR 11,r%,g%,b% RETURN ' ============================================================================== Desgril: x% = POSITION(2): y% = POSITION(3): w% = POSITION(4): h% = POSITION(5) IF w%<=0 OR h%<=0 THEN RETURN pas% = POSITION(6): ' pas de la grille, en pixels e% = POSITION(7): ' épaisseur traits en pixels r% = COLOR_PIXEL_RED(11,5,5): g% = COLOR_PIXEL_GREEN(11,5,5) b% = COLOR_PIXEL_BLUE(11,5,5): rgb% = r%*65536 + g%*256 + b%: ' couleur grille Grille_Form(x%,y%,w%,h%,pas%,e%,rgb%) RETURN ' ============================================================================== SUB Grille_Form(x%,y%,w%,h%,pas%,e%,rgb%) ' Tracé d'une grille sur un emplacement quelconque de l'écran en x%,y%, ' dimensions w% x h%, pas pas% pixels, épaisseur trait e%, couleur trait rgb% ' (= 65536*R + 256*G + B) DIM_LOCAL f%,r%,g%,b%,i% IF w%<=0 OR h%<=0 THEN EXIT_SUB IF VARIABLE("fdeb%") = 0 THEN DIM fdeb% IF VARIABLE("ffin%") = 0 THEN DIM ffin% IF fdeb%>0 AND ffin%>0: ' suppression préalable d'une grille préexistante FOR i% = fdeb% TO ffin% IF OBJECT_EXISTS(i%) > 0 THEN DELETE i% NEXT i% END_IF IF (x%+w%) > SCREEN_X THEN w% = SCREEN_X-x%: ' limité à l'écran IF (y%+h%) > SCREEN_Y THEN h% = SCREEN_Y-y%: ' idem r% = INT(rgb%/65536): g% = BIN_AND(rgb%,65280)/256: b% = BIN_AND(rgb%,255) fdeb% = 9700: f% = fdeb%-1 FOR i% = x% TO x%+w% STEP pas%: ' lignes verticales ( 1 Form par ligne) f% = f%+1: WHILE OBJECT_EXISTS(f%)=1: f% = f%+1: END_WHILE FORM f%: HIDE f%: COLOR f%,r%,g%,b%: BORDER_HIDE f% TOP f%,y%: LEFT f%,i%-e%/2: WIDTH f%,e%: HEIGHT f%,h% NEXT i% FOR i% = y% TO y%+h% STEP pas%: ' lignes horizontales ( 1 Form par ligne) f% = f%+1: WHILE OBJECT_EXISTS(f%)=1: f% = f%+1: END_WHILE FORM f%: HIDE f%: COLOR f%,r%,g%,b%: BORDER_HIDE f% TOP f%,i%-e%/2: LEFT f%,x%: WIDTH f%,w%: HEIGHT f%,e% NEXT i% FOR i% = fdeb% TO f%: SHOW i%: NEXT i%: ' affichage de l'ensemble ffin% = f% : ' dernier Form créé (pour raz ultérieur éventuel) END_SUB ' ============================================================================== Pour info, chaque trait est un Form individuel. Le bouton Raz delete ces Forms, tout simplement. On peut évidemment déplacer la fenêtre panoramic (Form 0) si elle est dans la zone stratégique. 19/ petite modif dans la sub. C'est elle qui gère la suppression éventuelle de la grille déjà existante avant de tracer la nouvelle, c'est indépendant du programme appelant. + suite à une demande pressante (si si) de Minibug, ajout du choix de couleur et épaisseur
Dernière édition par JL35 le Dim 19 Nov 2017 - 20:36, édité 5 fois | |
| | | Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: Tracer une grille n'importe où sur l'écran Dim 19 Nov 2017 - 1:14 | |
| Salut JL35 ! Testé avec succès ! Original et astucieux ! Effectivement, c'est très utile pour apprécier des dimensions. Merci pour l'idée et le partage ! - Spoiler:
| |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Tracer une grille n'importe où sur l'écran Dim 19 Nov 2017 - 1:57 | |
| Salut JL35 Comme Mark 37 a tout dit, il n'y a rien à ajouter, sauf ... | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Tracer une grille n'importe où sur l'écran Dim 19 Nov 2017 - 9:42 | |
| Merci les gars ! J'ajoute, mais c'est évident (ce sont des Form panoramic) que la grille s'efface automatiquement quand on quitte le programme. J'ai quelques petites modifs, mais pas stratégiques, on verra plus tard. | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Tracer une grille n'importe où sur l'écran Dim 19 Nov 2017 - 11:34 | |
| Salut JL35 ! L'idée est excellente... il suffisait d'y penser ! Juste une remarque : Peut être avoir la possibilité de changer la couleur mais bon c'est un détail. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Tracer une grille n'importe où sur l'écran Dim 19 Nov 2017 - 12:58 | |
| Bonjour Minibug,
Le programme appelant est juste un exemple vite fait, mais la couleur et l'épaisseur du trait font partie des paramètres d'appel de la sub, alors évidemment on peut les moduler depuis l'appel. C'est vrai j'aurais pu mettre une palette de couleurs dans l'appelant et un choix de trait, mais c'est facile à ajouter. Effectivement, moduler la couleur de la grille peut être utile pour le contraste, ça dépend de la couleur du fond.
J'ai modifié là-haut en supprimant le bouton 'Raz', c'est la sub elle-même qui gère l'effacement de la grille précédente éventuelle avant de tracer la nouvelle.
Bon, Minibug, spécialement pour toi, j'ai ajouté une petite palette de 6 couleurs et le choix de l'épaisseur du trait. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Tracer une grille n'importe où sur l'écran Dim 19 Nov 2017 - 14:08 | |
| | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Tracer une grille n'importe où sur l'écran Dim 19 Nov 2017 - 14:37 | |
| Mince alors Jean Claude, je crois bien que j'ai réinventé l'eau chaude... Et c'était il y a 1 ans 1/2 seulement, je ne m'en souvenais plus ! mes neurones se dégradent (et s'il te plait, ne prends pas la peine de me dire que c'est normal à mon âge)...
Tu dis que ta grille ne s'affiche pas entièrement... c'est normal si la largeur et la hauteur fournis ne sont pas des multiples du pas de la grille, dans ce cas il manque la dernière ligne (en dehors des dimensions données). | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| | | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Tracer une grille n'importe où sur l'écran Dim 19 Nov 2017 - 15:49 | |
| Envie ou demande... ça revient au même (dans la mesure où je sais comment faire !) @Jean Claude, concernant la grille incomplète, regarde le spoiler de Marc 37, au début du post: grille de 500 au pas de 40, manquent 20 pixels pour faire 13 colonnes de 40 (ou 20 pixels de trop pour 12 colonnes). A mon avis ce n'est peut-être pas esthétique, mais ce n'est pas gênant. | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Tracer une grille n'importe où sur l'écran Dim 19 Nov 2017 - 17:14 | |
| Oui JL35, je suis d'accord avec toi sauf que... ...Un demande pressante ou une envie pressante c'est pas tout a fait pareil non ?! | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Tracer une grille n'importe où sur l'écran Dim 19 Nov 2017 - 17:21 | |
| là aussi je sais comment faire... | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Tracer une grille n'importe où sur l'écran Dim 19 Nov 2017 - 19:52 | |
| C'est là qu'on peut voir comment je suis bon en math, je n'ai même pas pensé que la largeur et la hauteur devaient être multiple du pas. Ce n'est pas que mes neurones se détraquent, c'est plutôt qu'i il m'en manque. Pour une bonne visualisation de l'interface, sous W8.1, il faut mettre la hauteur de FORM 0 à 95 (HEIGHT 0,95), sinon il y a une barre de défilement qui en masque une partie. A+ | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Tracer une grille n'importe où sur l'écran Dim 19 Nov 2017 - 20:14 | |
| Ce n'est obligatoire que si on veut que la grille soit fermée (ça évite les courants d'air). Quant aux dimensions du Form 0, tu as raison évidemment, je suis sous W7, je le fais au pif mais je devrais toujours me baser sur Width_Client(0) et Height_Client(0) pour automatiser pour les autres versions. Mea culpa.
PS je viens de l'ajouter là-haut, ça devrait s'ajuster automatiquement maintenant, quel que soit l'OS Windows. | |
| | | Contenu sponsorisé
| Sujet: Re: Tracer une grille n'importe où sur l'écran | |
| |
| | | | Tracer une grille n'importe où sur l'écran | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |