FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Un prg Panoramic s'abime avec le temps
par papydall Aujourd'hui à 3:14

» Planétarium virtuel.
par Pedro Alvarez Hier à 16:58

» Dessin 2D: largeur de trait (résolu !)
par Jicehel Hier à 15:16

» Promenade dans le Ciel
par papydall Hier à 3:13

» PanExpress : l'éditeur Panoramic avec création d'objet
par Minibug Sam 23 Juin 2018 - 17:00

» Nouvelle version 0.34
par jean_debord Sam 23 Juin 2018 - 9:39

» Quantité de mémoire utilisée par un exe
par mindstorm Jeu 21 Juin 2018 - 21:22

» Projet de planétarium virtuel.
par Jean Claude Jeu 21 Juin 2018 - 19:02

» Animation: Feux de signalisation
par Minibug Mer 20 Juin 2018 - 20:28

» Problème avec 'file_load'.
par Pedro Alvarez Lun 18 Juin 2018 - 8:12

» Version instantanée V 0.9.28i20 du 13/06/2018
par jjn4 Sam 16 Juin 2018 - 14:25

» string$(0,chr$(32)) sans erreur
par silverman Ven 15 Juin 2018 - 19:56

» Version instantanée V 0.9.28i19 du 13/06/2018
par Minibug Ven 15 Juin 2018 - 19:14

» Mes souhaits d'amélioration de Panoramic.
par Pedro Alvarez Jeu 14 Juin 2018 - 20:17

» [RÉSOLU] Message d'erreur impossible à indentifier
par Minibug Mer 13 Juin 2018 - 20:52

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Juin 2018
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier

Partagez | 
 

 Tracer une grille n'importe où sur l'écran

Aller en bas 
AuteurMessage
JL35



Nombre de messages : 6292
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: 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
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Marc

avatar

Nombre de messages : 796
Age : 57
Localisation : TOURS
Date d'inscription : 17/03/2014

MessageSujet: 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:
 
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5962
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: 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 ...

Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
JL35



Nombre de messages : 6292
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: 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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Minibug

avatar

Nombre de messages : 2971
Age : 51
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

MessageSujet: 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 ! Wink

Juste une remarque : Peut être avoir la possibilité de changer la couleur mais bon c'est un détail.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://gpp.panoramic.free.fr
JL35



Nombre de messages : 6292
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: 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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

Nombre de messages : 5496
Age : 64
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Tracer une grille n'importe où sur l'écran   Dim 19 Nov 2017 - 14:08

De mon coté, j'ai un souci, la grille ne s'affiche pas entièrement Question
En regardant le code, je ne vois pas pourquoi.

@Jl35,
Tu as déjà fait ceci => http://panoramic.free-boards.net/t4801-une-grille-sur-l-ecran?highlight=grille

Et là ça marche chez moi. Exclamation Question

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



Nombre de messages : 6292
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: 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).
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Minibug

avatar

Nombre de messages : 2971
Age : 51
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

MessageSujet: Re: Tracer une grille n'importe où sur l'écran   Dim 19 Nov 2017 - 15:38

JL35 a écrit:
suite à une demande pressante (si si) de Minibug, ajout du choix de couleur et épaisseur

Bon et bien si tu le dit je te crois...
Mais pour moi, c'était plutôt un envie (...) qu'une demande ! Laughing Laughing Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://gpp.panoramic.free.fr
JL35



Nombre de messages : 6292
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: 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 !) Very Happy

@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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Minibug

avatar

Nombre de messages : 2971
Age : 51
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

MessageSujet: 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 ?! Laughing rendeer geek
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://gpp.panoramic.free.fr
JL35



Nombre de messages : 6292
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Tracer une grille n'importe où sur l'écran   Dim 19 Nov 2017 - 17:21

là aussi je sais comment faire...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

Nombre de messages : 5496
Age : 64
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: 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. Embarassed Ce n'est pas que mes neurones se détraquent, c'est plutôt qu'i il m'en manque. Very Happy

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+



Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



Nombre de messages : 6292
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: 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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Tracer une grille n'importe où sur l'écran   

Revenir en haut Aller en bas
 
Tracer une grille n'importe où sur l'écran
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» la grille a disparue ??
» Etablissement d'une grille horaire
» logiciel pour faire un plan de grille en fer forgé
» décodeur tv bbox qui grille ? >> non
» Utilitaire : génère grille (bmp) 8x8 , 16x16 , 32x32 , 64x64

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: