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
» Gestion d'un système client-serveur.
Calcul de la hauteur de base d'une police Emptypar Klaus Ven 17 Mai 2024 - 14:02

» item_index(résolu)
Calcul de la hauteur de base d'une police Emptypar jjn4 Mar 14 Mai 2024 - 19:38

» Bataille terrestre
Calcul de la hauteur de base d'une police Emptypar jjn4 Lun 13 Mai 2024 - 15:01

» SineCube
Calcul de la hauteur de base d'une police Emptypar Marc Sam 11 Mai 2024 - 12:38

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Calcul de la hauteur de base d'une police Emptypar Marc Sam 11 Mai 2024 - 12:22

» Philharmusique
Calcul de la hauteur de base d'une police Emptypar jjn4 Ven 10 Mai 2024 - 13:58

» PANORAMIC V 1
Calcul de la hauteur de base d'une police Emptypar papydall Jeu 9 Mai 2024 - 3:22

» select intégrés [résolu]
Calcul de la hauteur de base d'une police Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
Calcul de la hauteur de base d'une police Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
Calcul de la hauteur de base d'une police Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
Calcul de la hauteur de base d'une police Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
Calcul de la hauteur de base d'une police Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0(résolu)
Calcul de la hauteur de base d'une police Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
Calcul de la hauteur de base d'une police Emptypar Klaus Lun 6 Mai 2024 - 11:41

» @Jack
Calcul de la hauteur de base d'une police Emptypar Jack Mar 30 Avr 2024 - 20:40

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le Deal du moment :
Cartes Pokémon EV6.5 : où trouver le ...
Voir le deal

 

 Calcul de la hauteur de base d'une police

Aller en bas 
3 participants
AuteurMessage
JL35




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

Calcul de la hauteur de base d'une police Empty
MessageSujet: Calcul de la hauteur de base d'une police   Calcul de la hauteur de base d'une police EmptySam 3 Fév 2018 - 18:16

Pour savoir où est la base d'alignement (base des caractères majuscules par exemple) par rapport à la hauteur totale de la police donnée par TEXT_HEIGHT.
Par exemple pour aligner sur une même ligne de texte des polices différentes et/ou de taille différente, sur un Picture.
Code:
LABEL Police,Pol1,Affiche,Coord
DIM x%,y%,f$,a$,nl%,hl%,r%,z
f$ = "C:\TEXTES\Fetes.txt": ' <====== à adapter ===========
HEIGHT 0,500: WIDTH 0,500: BORDER_SMALL 0: FONT_BOLD 0: COLOR 0,180,255,255
EDIT 1: TOP 1,1: WIDTH 1,140: TEXT 1,"Arial": ON_CLICK 1,Police
SPIN 2: LEFT 2,WIDTH(1): WIDTH 2,50: MIN 2,6: MAX 2,255: POSITION 2,255
BUTTON 3: LEFT 3,LEFT(2)+WIDTH(2)+5: WIDTH 3,40: CAPTION 3,"OK": ON_CLICK 3,Affiche
ALPHA 5: TOP 5,0: LEFT 5,LEFT(3)+45: FONT_SIZE 5,14
  COLOR 5,255,255,0: FONT_COLOR 5,164,0,0
ALPHA 10: TOP 10,25: COLOR 10,255,255,0: FONT_SIZE 10,12
PICTURE 15: TOP 15,50: WIDTH 15,25: HEIGHT 15,HEIGHT(0)-85: COLOR 15,255,255,128
PICTURE 16: TOP 16,TOP(15): LEFT 16,WIDTH(15): HEIGHT 16,HEIGHT(15): WIDTH 16,WIDTH(0)-50
 ON_CLICK 16,Coord
2D_TARGET_IS 15
FOR y% = 0 TO HEIGHT(15) STEP 10
    2D_LINE 15,y%,25,y%
NEXT y%
FOR y% = 0 TO HEIGHT(15) STEP 100
    2D_LINE 5,y%,25,y%
NEXT y%
LIST 20: HIDE 20: TOP 20,TOP(1)+25: WIDTH 20,200: HEIGHT 20,HEIGHT(15)
FONT_NAMES_LOAD 20: ON_CLICK 20,Pol1
GOSUB Affiche
END
' ----------------------
Police:
  SHOW 20
RETURN
Pol1:
  TEXT 1,ITEM_INDEX$(20)
  HIDE 20
  GOSUB Affiche
RETURN
' ------------------------
Affiche:
2D_TARGET_IS 16: CLS
PRINT_TARGET_IS 16: FONT_NAME 16,TEXT$(1): FONT_SIZE 16,POSITION(2)
hl% = TEXT_HEIGHT("Abc_ïxyz",16)
CAPTION 5," HL = "+STR$(hl%)+" "
y% = 0: nl% = 0
PRINT_LOCATE 0,y%: PRINT "E_"
2D_PEN_COLOR 255,0,0: 2D_LINE 0,hl%,400,hl%
x% = POSITION(2)/2
FOR y% = hl% TO 0 STEP -1
    r% = COLOR_PIXEL_RED(16,x%,y%)
    IF r% = 0 THEN EXIT_FOR
NEXT y%
x%= 1000*y%/hl%: z = x%/1000
a$ = "Hauteur totale = "+STR$(hl%)+", hauteur base = "+STR$(y%)
a$ = a$+", rapport = "+STR$(z)
caption 10, a$
RETURN
' ------------------------
Coord:
  y% = MOUSE_Y_LEFT_DOWN(16)
  CAPTION 0,STR$(y%)
RETURN
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12301
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Calcul de la hauteur de base d'une police Empty
MessageSujet: Re: Calcul de la hauteur de base d'une police   Calcul de la hauteur de base d'une police EmptySam 3 Fév 2018 - 19:00

On peut aussi analyser la taille d'un caractère ou de toute une ligne de texte de la manière suivante (100 % Panoramic):
Code:


label choix, analyser, imprimer

dim i%, hauteur%, largeur%

combo 1 : width 1,200 : font_names_load 1 : on_click 1,choix
alpha 2 : left 2,width(1)+10 : caption 2,str$(count(1))+" polices"
spin 3 : left 3,300 : width 3,100 : min 3,8 : max 3,64 : position 3,12

picture 10 : top 10,40 : left 10,10 : width 10,400 : height 10,300
print_target_is 10 : color 10,255,255,0

button 11 : top 11,170 : left 11,left(10)+width(10)+10 : caption 11,"Analyser" : on_click 11,analyser

alpha 20 : top 20,top(10)+height(10)+10 : left 20,10 : caption 20,"Text:"
edit 21 : top 21,top(20) : left 21,40 : width 21,200
button 22 : top 22,top(21) : left 22,left(21)+width(21) : caption 22,"Imprimer" : on_click 22,imprimer

end

imprimer:
  print_locate 0,0
  color 10,255,255,0
  print text$(21)
  return

choix:
  font_name 10,item_index$(1)
  font_size 10,position(3)
  print_locate 0,0
  color 10,255,255,0
  print "W"
  return

analyser:
  for i%=0 to height(10)
    if color_pixel_blue(10,i%,0)=0
      largeur = i%
      exit_for
    end_if
  next i%
  for i%=0 to width(10)
    if color_pixel_blue(10,0,i%)=0
      hauteur = i%
      exit_for
    end_if
  next i%
  message "Hauteur="+str$(hauteur%)+"  Largeur="+str$(largeur%)
  return

Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
JL35




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

Calcul de la hauteur de base d'une police Empty
MessageSujet: Re: Calcul de la hauteur de base d'une police   Calcul de la hauteur de base d'une police EmptySam 3 Fév 2018 - 19:18

En fait, le problème est de savoir où se trouve la ligne de base des caractères (par exemple la base d'une majuscule) par rapport à la hauteur totale (suite à une question de Oscaribout).
Pour pouvoir aligner des textes sur une même ligne, de tailles et/ou de polices différentes.
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12301
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Calcul de la hauteur de base d'une police Empty
MessageSujet: Re: Calcul de la hauteur de base d'une police   Calcul de la hauteur de base d'une police EmptySam 3 Fév 2018 - 19:54

Là, on trouve la base:
Code:
' analyser_taille_police.bas

label choix, analyser, imprimer, base

dim i%, hauteur%, largeur%, n%, k%, h%, base%

combo 1 : width 1,200 : font_names_load 1 : on_click 1,choix
alpha 2 : left 2,width(1)+10 : caption 2,str$(count(1))+" polices"
spin 3 : left 3,300 : width 3,100 : min 3,8 : max 3,64 : position 3,12

picture 10 : top 10,40 : left 10,10 : width 10,400 : height 10,300
print_target_is 10 : color 10,255,255,0 : 2d_target_is 10

button 11 : top 11,170 : left 11,left(10)+width(10)+10 : caption 11,"Analyser" : on_click 11,analyser
button 12 : top 12,200 : left 12,left(10)+width(10)+10 : caption 12,"Ligne de base" : on_click 12,base

alpha 20 : top 20,top(10)+height(10)+10 : left 20,10 : caption 20,"Text:"
edit 21 : top 21,top(20) : left 21,40 : width 21,200
button 22 : top 22,top(21) : left 22,left(21)+width(21) : caption 22,"Imprimer" : on_click 22,imprimer

end

imprimer:
  print_locate 0,0
  color 10,255,255,0
  print text$(21)
  return

choix:
  font_name 10,item_index$(1)
  font_size 10,position(3)
  print_locate 0,0
  color 10,255,255,0
  print "W"
  return

analyser:
  for i%=0 to width(10)
    if color_pixel_blue(10,i%,0)=0
      largeur% = i%
      exit_for
    end_if
  next i%
  for i%=0 to height(10)
    if color_pixel_blue(10,0,i%)=0
      hauteur% = i%
      exit_for
    end_if
  next i%
  message "Hauteur="+str$(hauteur%)+"  Largeur="+str$(largeur%)
  return
 
base:
  font_name 10,item_index$(1)
  font_size 10,position(3)
  print_locate 0,0
  color 10,255,255,0
  print "E"
  ' largeur
  for i%=0 to width(10)
    if color_pixel_blue(10,i%,0)=0
      largeur% = i%
      exit_for
    end_if
  next i%
  ' hauteur
  for i%=0 to height(10)
    if color_pixel_blue(10,0,i%)=0
      hauteur% = i%
      exit_for
    end_if
  next i%
  ' chercher la barre verticale du E
  h% = hauteur%/2
  2d_line 0,h%-1,width(10),h%-1
  for i%=0 to width(10)
    if color_pixel_red(10,i%,h%)<>255
      k% = i%
      exit_for
    end_if
  next i%
  ' chercher le haut du E
  2d_line k%-1,0,k%-1,height(10)
  for i%=0 to height(10)
    if color_pixel_red(10,k%,i%)<>255
      n% = i%
      exit_for
    end_if
  next i%
  ' chercher le bas du E
  2d_line 0,n%,width(10),n%
  for i%=n%+1 to height(10)
    if color_pixel_red(10,k%,i%)=255
      base% = i%
      exit_for
    end_if
  next i%
  2d_line 0,base%,width(10),base%
  display
  message "Base="+str$(base%) + "  Hauteur="+str$(hauteur%)+"  Largeur="+str$(largeur%)
  return

Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
JL35




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

Calcul de la hauteur de base d'une police Empty
MessageSujet: Re: Calcul de la hauteur de base d'une police   Calcul de la hauteur de base d'une police EmptySam 3 Fév 2018 - 20:07

A mon avis, c'est plus simple que ça, si j'ai bien compris le problème d'Oscaribout: aligner des polices ou tailles différentes sur une même ligne:
Code:
DIM x%,y%,f$,a$,nl%,hl%,r%,z,d%,p%,fnt$,sz%
f$ = "C:\TEXTES\Fetes.txt": ' <====== à adapter ===========
HEIGHT 0,200: WIDTH 0,840: BORDER_SMALL 0: FONT_BOLD 0: COLOR 0,180,255,255
p% = 16
PICTURE p%: HEIGHT p%,150: WIDTH p%,WIDTH(0)-30
print_target_is p%
x% = 0: y% = 80: ' ligne de base
' -----
a$ = "Au clair": fnt$ = "Arial": sz% = 20
font_name p%,fnt$: font_size p%,sz%: hl% = TEXT_HEIGHT(a$,p%)
Base_Carac(fnt$,sz%)
d% = VAL(CLIPBOARD_STRING_PASTE$)
PRINT_LOCATE x%,y%-d%: PRINT a$: x% = x%+TEXT_WIDTH(a$,p%)
' -----
a$ = " de la lune": fnt$ = "Times New Roman": sz% = 32
font_name p%,fnt$: font_size p%,sz%: hl% = TEXT_HEIGHT(a$,p%)
Base_Carac(fnt$,sz%)
d% = VAL(CLIPBOARD_STRING_PASTE$)
PRINT_LOCATE x%,y%-d%: PRINT a$: x% = x%+TEXT_WIDTH(a$,p%)
' -----
a$ = " mon ami Pierrot,": fnt$ = "Lucida Console": sz% = 12
font_name p%,fnt$: font_size p%,sz%: hl% = TEXT_HEIGHT(a$,p%)
Base_Carac(fnt$,sz%)
d% = VAL(CLIPBOARD_STRING_PASTE$)
PRINT_LOCATE x%,y%-d%: PRINT a$: x% = x%+TEXT_WIDTH(a$,p%)
' -----
a$ = " prête-moi": fnt$ = "Calibri": sz% = 60
font_name p%,fnt$: font_size p%,sz%: hl% = TEXT_HEIGHT(a$,p%)
Base_Carac(fnt$,sz%)
d% = VAL(CLIPBOARD_STRING_PASTE$)
PRINT_LOCATE x%,y%-d%: PRINT a$: x% = x%+TEXT_WIDTH(a$,p%)
' -----
2D_TARGET_IS p%: 2d_line 0,y%,width(p%),y%: ' pour voir l'alignement
END
' ---------------------- -------------------------------------------------------
SUB Base_Carac(fnt$,sz%)
  ' Calcul de l'emplacement de la ligne de base des caractères par rapport au
  ' sommet de la police, résultat en pixels rendu dans le presse-papier
  ' Usage: pour aligner sur une même ligne des textes de polices et/ou de tailles
  ' -----  différentes
  DIM_LOCAL n2d%,npr%,p%,x%,y%,hl%,r%
  n2d% = NUMBER_2D_TARGET: npr% = NUMBER_PRINT_TARGET
  p% = 900: PICTURE p%: HIDE p%
  PRINT_TARGET_IS p%: FONT_NAME p%,fnt$: FONT_SIZE p%,sz%
  hl% = TEXT_HEIGHT("Ey",p%): ' hauteur totale de la police
  PRINT_LOCATE 0,0: PRINT "E"
  2D_TARGET_IS p%
  x% = sz%/2
  FOR y% = hl% TO 0 STEP -1
      r% = COLOR_PIXEL_RED(p%,x%,y%): IF r% = 0 THEN EXIT_FOR
  NEXT y%
  CLIPBOARD_STRING_COPY STR$(y%): ' ligne de base depuis le sommet
  2D_TARGET_IS n2d%: PRINT_TARGET_IS npr%: DELETE p%
END_SUB
' ---------------------- -------------------------------------------------------
Pour obtenir quelque chose comme ça:
(Arial taille 20, Times New Roman taille 32, Lucida Console taille 12, Calibri taille 60)
Calcul de la hauteur de base d'une police Exem210


Dernière édition par JL35 le Sam 3 Fév 2018 - 21:08, édité 2 fois
Revenir en haut Aller en bas
Oscaribout




Nombre de messages : 471
Date d'inscription : 29/12/2016

Calcul de la hauteur de base d'une police Empty
MessageSujet: Re: Calcul de la hauteur de base d'une police   Calcul de la hauteur de base d'une police EmptySam 3 Fév 2018 - 20:10

Travaillez, prenez de la peine, c'est le fond qui manque le moins (de mémoire il y a beaucoup d'eau tombé depuis).

Je ne peux plus suivre, vous allez trop vite pour moi. Mais c'est très bien!
Revenir en haut Aller en bas
JL35




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

Calcul de la hauteur de base d'une police Empty
MessageSujet: Re: Calcul de la hauteur de base d'une police   Calcul de la hauteur de base d'une police EmptySam 3 Fév 2018 - 20:12

C'est tout simple, la sub fait tout le boulot !
(c'est 'le Laboureur et ses enfants', non ?)
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12301
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Calcul de la hauteur de base d'une police Empty
MessageSujet: Re: Calcul de la hauteur de base d'une police   Calcul de la hauteur de base d'une police EmptySam 3 Fév 2018 - 21:36

Une variante plus simple de mon code, mais qui marche aussi avec des polices pour lesquelles le E n'est pas composé de lignes droites:
Code:
' analyser_taille_police.bas

label choix, analyser, imprimer, base

dim i%, hauteur%, largeur%, n%, k%, h%, l%, base%, b1%, b2%, b3%

combo 1 : width 1,200 : font_names_load 1 : on_click 1,choix
alpha 2 : left 2,width(1)+10 : caption 2,str$(count(1))+" polices"
spin 3 : left 3,300 : width 3,100 : min 3,8 : max 3,64 : position 3,12

picture 10 : top 10,40 : left 10,10 : width 10,400 : height 10,300
print_target_is 10 : color 10,255,255,0 : 2d_target_is 10

button 11 : top 11,170 : left 11,left(10)+width(10)+10 : caption 11,"Analyser" : on_click 11,analyser
button 12 : top 12,200 : left 12,left(10)+width(10)+10 : caption 12,"Ligne de base" : on_click 12,base

alpha 20 : top 20,top(10)+height(10)+10 : left 20,10 : caption 20,"Text:"
edit 21 : top 21,top(20) : left 21,40 : width 21,200
button 22 : top 22,top(21) : left 22,left(21)+width(21) : caption 22,"Imprimer" : on_click 22,imprimer

edit 30 : top 30,top(21)+height(21)+10 : width 30,width(10)

end

imprimer:
  print_locate 0,0
  color 10,255,255,0
  print text$(21)
  return

choix:
  font_name 10,item_index$(1)
  font_size 10,position(3)
  print_locate 0,0
  color 10,255,255,0
  print "W"
  return

analyser:
  for i%=0 to width(10)
    if color_pixel_blue(10,i%,0)=0
      largeur% = i%
      exit_for
    end_if
  next i%
  for i%=0 to height(10)
    if color_pixel_blue(10,0,i%)=0
      hauteur% = i%
      exit_for
    end_if
  next i%
  text 30, "Hauteur="+str$(hauteur%)+"  Largeur="+str$(largeur%)
  return
 
base:
  font_name 10,item_index$(1)
  font_size 10,position(3)
  print_locate 0,0
  color 10,255,255,0
  print "E"
 
  ' largeur
  for i%=width(10) to 0 step -1
    if color_pixel_blue(10,i%,0)<>0
      largeur% = i%
      exit_for
    end_if
  next i%
  2d_line largeur%,0,largeur%,width(10)
 
  ' hauteur
  for i%=height(10) to 0 step -1
    if color_pixel_blue(10,0,i%)<>0
      hauteur% = i%
      exit_for
    end_if
  next i%
  2d_line 0,hauteur%,width(10),hauteur%
 
  ' chercher la barre horizontale du bas du E
  l% = largeur%/2
  for i%=hauteur%-1 to 0 step -1
    if color_pixel_red(10,l%,i%)<>255
      b1% = i%
      exit_for
    end_if
  next i%
  l% = largeur%/4
  for i%=hauteur%-1 to 0 step -1
    if color_pixel_red(10,l%,i%)<>255
      b2% = i%
      exit_for
    end_if
  next i%
  l% = (largeur%*3)/4
  for i%=hauteur%-1 to 0 step -1
    if color_pixel_red(10,l%,i%)<>255
      b3% = i%
      exit_for
    end_if
  next i%
 
  base% = (b1%+b2%+b3%)/3
  2d_pen_color 0,0,255
  2d_line 0,base%,width(10),base%
  2d_pen_color 0,0,0
 
  display
  text 30, "Base="+str$(base%) + "  Hauteur="+str$(hauteur%)+"  Largeur="+str$(largeur%)
  return

Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé





Calcul de la hauteur de base d'une police Empty
MessageSujet: Re: Calcul de la hauteur de base d'une police   Calcul de la hauteur de base d'une police Empty

Revenir en haut Aller en bas
 
Calcul de la hauteur de base d'une police
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Calcul des longueur et hauteur d'un texte dans un objet
» Calcul d’angle ALIAS Question de calcul de moyenne : RESOLU
» Largeur et hauteur d'une image JPG ou BMP
» Une pseudo-police bitmap
» hauteur effective de l'intérieur d'une fenêtre

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: