FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
Une petite règle Emptypar Pedro Sam 23 Nov 2024 - 15:50

» Un autre pense-bête...
Une petite règle Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Une petite règle Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Une petite règle Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Une petite règle Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Une petite règle Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Une petite règle Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Une petite règle Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Une petite règle Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Une petite règle Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Une petite règle Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Une petite règle Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Une petite règle Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Une petite règle Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Une petite règle Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le Deal du moment :
Smartphone Xiaomi 14 – 512 Go- 6,36″ 5G ...
Voir le deal
599 €

 

 Une petite règle

Aller en bas 
4 participants
AuteurMessage
JL35




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

Une petite règle Empty
MessageSujet: Une petite règle   Une petite règle EmptyJeu 29 Juil 2021 - 16:21

Il y a déjà eu un sujet là-dessus, mais bon...
Une petite règle simple, graduée en millimètres, que l'on peut promener sur tout l'écran, horizontale ou verticale.
Pratique pour mesurer sur une page A4 grandeur nature à l'écran (c'est à ajuster à son matériel, chez moi ça fait
un picture de 778 x 1100 pixels pour mesurer 210x297 mm, sur mon écran 24" 1920x1200 pixels).
Code:
WIDTH 0,800: HEIGHT 0,1140: BORDER_SMALL 0
PICTURE 1: WIDTH 1,778: HEIGHT 1,1100: 2D_TARGET_IS 1
Regle_A4()
END
' =============================================================================
SUB Regle_A4()
  ' Affichage d'une règle graduée en mm, déplaçable à la souris sur tout l'écran,
  '   orientable horizontale ou verticale en bascule (petit bouton à gauche).
  ' Quitter: double_clic sur la règle.
  IF LABEL("Attn") = 0 THEN LABEL Attn
  IF LABEL("Rota") = 0 THEN LABEL Rota
  IF LABEL("Freg") = 0 THEN LABEL Freg  
  DIM_LOCAL n2,np,ppm,rg,hr,h1,a$,i,ff,x0,y0,x,y,x1,y1,tr,lr,ori,pv,pq,ih,iv,im(2)
  DIM_LOCAL wp,hp,wa4,ha4
  wa4 = 210: ha4 = 297: ' dimensions page A4, ou tout l'écran, en millimètres
  wp = 778: hp = 1100: ' page A4 à l'écran, ou tout l'écran, en pixels
  ppm = hp/ha4: ' pixels/mm, à ajuster (ici, 297 mm = 1100 pixels)
                  ' soit image d'une page A4 grandeur nature = 778 x 1100 pixels
  n2 = NUMBER_2D_TARGET: np = NUMBER_PRINT_TARGET
  hr = 30: ' épaisseur règle
  rg = 840
  FORM rg: BORDER_HIDE rg: x0 = 0: y0 = 0: ' position initiale
        TOP rg,y0: LEFT rg,x0: WIDTH rg,778: HEIGHT rg,hr: COLOR rg,255,255,128
        ON_DOUBLE_CLICK rg,Freg
  pv=rg+1: BUTTON pv: PARENT pv,rg: TOP pv,7: LEFT pv,12: WIDTH pv,14: HEIGHT pv,12
          FONT_SIZE pv,8: CAPTION pv,">": FONT_BOLD pv: ON_CLICK pv,Rota
  iv = pv+1: IMAGE iv: im(1) = iv        
  ih = iv+1: IMAGE ih: im(0) = ih
  
  2D_TARGET_IS rg: PRINT_TARGET_IS rg  
  WIDTH rg,hr: HEIGHT rg,hp: ' créer image règle verticale
  FOR y = 0 TO ha4: ' hauteur A4, 297 mm (hauteur de la règle verticale)
      y1 = y*ppm: h1 = 5: a$ = ""
      IF y/5 = INT(y/5)
          h1 = h1+3
          IF y/10 = INT(y/10) THEN h1 = h1+3: a$ = str$(y/10): i=TEXT_HEIGHT(a$,rg)
      END_IF
      2D_LINE 0,y1,h1,y1: 2D_LINE hr,y1,hr-h1-2,y1
      IF a$<>"" THEN PRINT_LOCATE h1-3,y1-i/2: PRINT a$
  NEXT y
  TOP pv,8: LEFT pv,8: 2D_IMAGE_COPY iv,0,0,WIDTH(rg),HEIGHT(rg)
  CLS
  WIDTH rg,wp: HEIGHT rg,hr: ' créer image règle horizontale
  FOR x = 0 TO wa4: ' largeur A4, 210 mm (longueur de la règle horizontale)
      x1 = x*ppm: h1 = 5: a$ = ""
      IF x/5 = INT(x/5)
          h1 = h1+3
          IF x/10 = INT(x/10) THEN h1 = h1+3: a$ = str$(x/10): i=TEXT_WIDTH(a$,rg)
      END_IF
      2D_LINE x1,0,x1,h1: 2D_LINE x1,hr,x1,hr-h1-2
      IF a$<>"" THEN PRINT_LOCATE x1-i/2,h1-3: PRINT a$
  NEXT x
  TOP pv,8: LEFT pv,12: 2D_IMAGE_COPY ih,0,0,WIDTH(rg),HEIGHT(rg): ori = 0
Attn:
  WHILE MOUSE_LEFT_DOWN(rg) = 0: TO_FOREGROUND rg: PAUSE 200: END_WHILE
  x1 = MOUSE_X_POSITION(rg): y1 = MOUSE_Y_POSITION(rg)
  WHILE MOUSE_LEFT_UP(rg) = 0
       tr = TOP(rg): lr = LEFT(rg)  
       x = MOUSE_X_POSITION(rg): y = MOUSE_Y_POSITION(rg)
       IF x<>x1 OR y<>y1
           tr = tr+y-y1: lr = lr+x-x1: TOP rg,tr: LEFT rg,lr
           2D_IMAGE_PASTE im(ori),0,0
       END_IF
       PAUSE 100
  END_WHILE
  GOTO Attn
Rota:
  TOP rg,y0: LEFT rg,x0: 2D_TARGET_IS rg
  IF ori = 0: ' horizontale -> verticale
      WIDTH rg,hr: HEIGHT rg,hp: 2D_IMAGE_PASTE iv,0,0: LEFT pv,8: ori = 1
  ELSE: ' verticale -> horizontale
      WIDTH rg,wp: HEIGHT rg,hr: 2D_IMAGE_PASTE ih,0,0: LEFT pv,5: ori = 0
  END_IF
RETURN
Freg:
  2D_TARGET_IS n2: PRINT_TARGET_IS np: DELETE rg: DELETE iv: DELETE ih
END_SUB
Une petite règle Clip110
- pour basculer règle horizontale/verticale, cliquer le petit bouton en haut à gauche sur la règle (>).
- pour quitter (supprimer la règle): double-clic dessus.


Dernière édition par JL35 le Jeu 29 Juil 2021 - 22:26, édité 2 fois
Revenir en haut Aller en bas
Minibug

Minibug


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

Une petite règle Empty
MessageSujet: Re: Une petite règle   Une petite règle EmptyJeu 29 Juil 2021 - 18:28

Salut JL35 !

Et ben oui on a toujours besoin d'une petite règle sous la main. Laughing

Par contre je ne trouve pas vraiment utile la page A4 !
Est ce qu'il ne serait pas possible de la masquer/afficher par un petit bouton sur la règle à droite par exemple.
(Comme le petit bouton à gauche) Wink

Et pour pinailler encore un peu, pourquoi pas la possibilité de l'agrandir ou la réduire par le bord droit...
Oui je sais je suis casse pied... Après c'est toi qui vois. geek
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Marc

Marc


Nombre de messages : 2466
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

Une petite règle Empty
MessageSujet: Re: Une petite règle   Une petite règle EmptyJeu 29 Juil 2021 - 18:55

Bonjour !

Très sympa et jolie cette petite règle !

Merci pour le code-source !

Bravo JL35 !

Revenir en haut Aller en bas
JL35




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

Une petite règle Empty
MessageSujet: Re: Une petite règle   Une petite règle EmptyJeu 29 Juil 2021 - 20:21

Bonsoir Marc, et merci pour ton retour.

Salut Minibug,
Pour mes besoins personnels je l'ai conçue grandeur nature pour une page A4, ça permet de voir les dimensions en millimètres,
mais rien n'empêche de la faire à la dimensions qu'on veut.

Je rajoute des paramètres pour ça, en tête de la sub, tu peux faire:
   wa4 et wp = largeur en millimètres et en pixels de ton écran
   ha4 et hp  = hauteur en millimètres et en pixels de l'écran
(je ne sais pas si on a accès à ces données par programme, en pixels, oui, mais en millimètres ?)
et comme ça tu as une règle qui fait toute la largeur (horizontale) ou toute la hauteur (verticale) de l'écran.
(je corrige là-haut)

Pour la page A4, la règle est en millimètres justement parce que la surface au-dessous (A4) est de dimensions connues en millimètres.
Ceci dit, le code est ouvert et pas compliqué, tu peux le bricoler à ta guise !
Revenir en haut Aller en bas
JL35




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

Une petite règle Empty
MessageSujet: Re: Une petite règle   Une petite règle EmptyDim 1 Aoû 2021 - 10:55

Une autre version de la réglette qui conviendra peut-être mieux à Minibug...
Celle-ci s'affiche sur tout l'écran, horizontalement ou verticalement, avec graduation au choix en millimètres ou en pixels.
Pour la graduation en mm, il faut impérativbement mettre à jour la variable we = largeur de son moniteur en millimètres.
La graduation en pixels est faite avec un pas de 10 pixels pour être plus lisible.

La règle est déplaçable à la souris sur tout l'écran: clic, déplacer, relâcher.
La fermeture définitive (suppression) se fait par double-clic sur la règle.

La sub n'a besoin d'aucun paramètre d'appel.
Code:
label Fin
on_close 0,Fin
Reglette()
END
Fin:
TERMINATE
end

SUB Reglette()
  ' Affichage d'un objet réglette graduée en millimètres ou en pixels
  ' Orientation horizontale ou verticale, bouton haut/gauche ('V' ou 'H')
  ' Graduation pixels ou mm: bouton suivant ('P' ou 'M')
  ' Déplaçable sur tout l'écran à la souris (cliquer, déplacer, relâcher)
  ' Le double-clic sur la règle la supprime.
  ' ATTENTION: Renseigner la variable we = largeur de l'écran en millimètres.
  IF LABEL("Ma") = 0 THEN LABEL Ma
  IF LABEL("Mr") = 0 THEN LABEL Mr
  IF LABEL("Mg") = 0 THEN LABEL Mg
  IF LABEL("Ms") = 0 THEN LABEL Ms
  DIM_LOCAL fr,dt,pt,ff,ppm,wt,ht,hr,h,i,j,xt,yt,st,n$,x,y,x1,y1,we,ws,hs
  DIM_LOCAL im(3),ty,br,be
  ' ****************
  we = 518: ' largeur de l'écran, en millimètres, *** À AJUSTER ***
  ' ****************
  ws = SCREEN_X: hs = SCREEN_Y: ' dimensions de l'écran en pixels
  dt = NUMBER_2D_TARGET: pt = NUMBER_PRINT_TARGET
  hr = 30: ' épaisseur de la règle
  ppm = ws/we: ' écran acer 24"
  fr = 850: ' n° d'objet règle (arbitraire)
  FORM fr: BORDER_HIDE fr: TOP fr,0: LEFT fr,0: WIDTH fr,ws: HEIGHT fr,hs
          COLOR fr,255,255,190: 2D_TARGET_IS fr: PRINT_TARGET_IS fr
          ON_DOUBLE_CLICK fr,Ms
  i=fr+1: BUTTON i: PARENT i,fr: TOP i,9: LEFT i,7: WIDTH i,17: HEIGHT i,13
          CAPTION i,"V": ON_CLICK i,Mr: br = i
  i=i+1: BUTTON i: PARENT i,fr: TOP i,9: LEFT i,30: WIDTH i,17: HEIGHT i,13
        CAPTION i,"P": ON_CLICK i,Mg: be = i
  i=i+1: IMAGE i: im(0) = i: ' image règle horizontale millimètres
  i=i+1: IMAGE i: im(1) = i: ' image règle horizontale pixels
  i=i+1: IMAGE i: im(2) = i: ' image règle verticale millimètres
  i=i+1: IMAGE i: im(3) = i: ' image règle verticale pixels
  WIDTH fr,hr: HEIGHT fr,hs
  ' Création des 4 images de règle
  wt = 30: ht = hs: ' ***** règle verticale, millimètres *****
  2D_LINE 0,0,0,hs: 2D_LINE hr-1,0,hr-1,hs
  FOR i = 0 TO hs
      n$ = LTRIM$(RIGHT$("  "+STR$(i),4)): j = TEXT_WIDTH(n$,fr)
      yt = i*ppm: h = 5: IF i/5=INT(i/5) THEN h=8
      IF i/10 = INT(i/10) THEN h = 9
      2D_LINE 1,yt,h+1,yt: 2D_LINE hr-1,yt,hr-h-1,yt
      IF h = 9 THEN PRINT_LOCATE 9,yt-j/2: PRINT n$
  NEXT i
  2D_IMAGE_COPY im(2),0,0,ws,hs: CLS
  2D_LINE 0,0,0,hs: 2D_LINE hr-1,0,hr-1,hs
  st = 10: ' ***** verticale, pas de 10 pixels *****
  FOR i = 0 TO hs STEP st
      n$ = LTRIM$(RIGHT$("  "+STR$(i),4)): j = TEXT_WIDTH(n$,fr)
      yt = i: h = 5: IF i/50 = INT(i/50) THEN h = 8
      IF i/100 = INT(i/100) THEN h = 9
      2D_LINE 1,yt,h+1,yt: 2D_LINE hr-1,yt,hr-h-1,yt
      IF h = 9 THEN PRINT_LOCATE 9,yt-j/2: PRINT n$
  NEXT i
  2D_IMAGE_COPY im(3),0,0,ws,hs: CLS 
  ' ***** règle horizontale, millimètres *****
  WIDTH fr,ws: HEIGHT fr,hr
  2D_LINE 0,0,ws,0: 2D_LINE 0,hr-1,ws,hr-1
  FOR i = 0 TO ws
      n$ = LTRIM$(RIGHT$("  "+STR$(i),4)): j = TEXT_WIDTH(n$,fr)
      xt = i*ppm: h = 5: IF i/5=INT(i/5) THEN h=8
      IF i/10 = INT(i/10) THEN h = 9
      2D_LINE xt,1,xt,h+1: 2D_LINE xt,hr-1,xt,hr-h-1
      IF h = 9 THEN PRINT_LOCATE xt-j/2,9: PRINT n$
  NEXT i
  2D_IMAGE_COPY im(0),0,0,ws,hs: CLS
  2D_LINE 0,0,ws,0: 2D_LINE 0,hr-1,ws,hr-1
  st = 10: ' ***** horizontale, pas de 10 pixels *****
  FOR i = 0 TO ws STEP st: ' pixels
      n$ = LTRIM$(RIGHT$("  "+STR$(i),4)): j = TEXT_WIDTH(n$,fr)
      xt = i: h = 5: IF i/50 = INT(i/50) THEN h = 8
      IF i/100 = INT(i/100) THEN h = 9
      2D_LINE xt,1,xt,h+1: 2D_LINE xt,hr-1,xt,hr-h-1
      IF h = 9 THEN PRINT_LOCATE xt-j/2,9: PRINT n$
  NEXT i
  2D_IMAGE_COPY im(1),0,0,ws,hs
  ty = 0: 2D_IMAGE_PASTE im(ty),0,0
Ma:
  ' Attente clic sur la règle pour déplacement
  WHILE MOUSE_LEFT_DOWN(fr) = 0: PAUSE 100: IF ff = 1 THEN EXIT_WHILE
  END_WHILE
  IF ff = 0
      x1 = MOUSE_X_POSITION(fr): y1 = MOUSE_Y_POSITION(fr)
      WHILE MOUSE_LEFT_UP(fr) = 0
          x = MOUSE_X_POSITION(fr): y = MOUSE_Y_POSITION(fr)
          IF x<>x1 OR y<>y1
              TOP fr,TOP(fr)+y-y1: LEFT fr,LEFT(fr)+x-x1
              2D_IMAGE_PASTE im(ty),0,0
          END_IF
          PAUSE 100
      END_WHILE
      GOTO Ma
  END_IF
  2D_TARGET_IS dt: PRINT_TARGET_IS pt: DELETE fr: EXIT_SUB
Mr:
  TOP fr,0: LEFT fr,0: ' changement d'orientation
  IF ty = 0 OR ty = 1: ' horizontale
      ty = ty+2: WIDTH fr,hr: HEIGHT fr,hs: ' -> verticale
      TOP be,45: LEFT be,7: CAPTION br,"H"
  ELSE
      ty = ty-2: WIDTH fr,ws: HEIGHT fr,hr: ' -> horizontale
      TOP be,9: LEFT be,30: CAPTION br,"V"
  END_IF
  2D_IMAGE_PASTE im(ty),0,0     
RETURN
Mg:
  SELECT ty: ' changement pixels <-> mm
      CASE 0: ty = 1: CAPTION be,"M": ' horizontale mm -> pixels
      CASE 1: ty = 0: CAPTION be,"P": ' horizontale pixels -> mm
      CASE 2: ty = 3: CAPTION be,"M": ' verticale mm -> pixels
      CASE 3: ty = 2: CAPTION be,"P": ' verticale pixels -> mm
  END_SELECT
  2D_IMAGE_PASTE im(ty),0,0
RETURN
Ms:
  ff = 1: ' double-clic, arrêt demandé
RETURN
END_SUB


Dernière édition par JL35 le Lun 2 Aoû 2021 - 22:19, édité 1 fois
Revenir en haut Aller en bas
Jean Claude

Jean Claude


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

Une petite règle Empty
MessageSujet: Re: Une petite règle   Une petite règle EmptyDim 1 Aoû 2021 - 19:16

Bravo JL35,
j'ai la première version depuis très longtemps sur mon bureau.
Je m'en servais souvent pour mesurer des sprites....

cheers
Revenir en haut Aller en bas
JL35




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

Une petite règle Empty
MessageSujet: Re: Une petite règle   Une petite règle EmptyDim 1 Aoû 2021 - 19:50

Salut mon ami Jean Claude,

Content de te voir et merci pour ta fidélité !
J'espère que tu ne vas pas trop mal malgré tous ces aléas, covid, été pas très brillant,
et problèmes personnels (je sais, on n'a plus 20 ans..).
Et si la version d'origine te convient, c'est très bien, pas la peine de changer !

PS
Dans la dernière version ci-dessus, il reste une erreur aléatoire (~ une fois sur 10 ?)
que je ne m'explique pas.
Elle apparaît (parfois) à la fermeture par double-clic sur la règle:
Une petite règle Err10
Pourtant le double-clic se contente de positionner un indicateur (ff) qui est testé à l'intérieur de while/end_while
pour n'être effectif qu'en dehors de la boucle... scratch
Revenir en haut Aller en bas
Contenu sponsorisé





Une petite règle Empty
MessageSujet: Re: Une petite règle   Une petite règle Empty

Revenir en haut Aller en bas
 
Une petite règle
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Supplice chinois
» Pour découper une image en petits rectangles SANS DLL
» Une règle à l'écran
» Problème de règle
» Petite (toute petite) Sub: Dir

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: