Bonjour, Je voudrais, sur un Tpanel, mettre le font r_ansi en size 8 mais avec la même hauteur qu'en size 14. C'est à dire un font un peu étiré en hauteur.
C'est possible ça?
Merci.
Bonjour, Je voudrais, sur un Tpanel, mettre le font r_ansi en size 8 mais avec la même hauteur qu'en size 14. C'est à dire un font un peu étiré en hauteur.
C'est possible ça?
Merci.
Bonjour,
Il existe 2 propriété pour changer la taille d'un Font
SIZE
Indique la hauteur de la fonte,exprimée en points.
Syntaxe Delphi :
propertySize:Integer;
Syntaxe C++:
__ property intSize ={read=GetSize,write=SetSize,stored=false,nodefault};
Description
Utilisez la propriétéSize pour spécifier la hauteur de la fonte en points.Si la valeur est négative,le talus interne,apparaissant au-dessus de chaque ligne de texte est inclus.Si la valeur est positive,Size représente la hauteur des caractères sans le talus interne.
Pour déterminer la taille de la fonte en pixels,utilisez la propriétéHeight.La valeur de Size peut être déterminée àpartir de la hauteur en pixels en utilisant la formule suivante :
Font.Size =-Font.Height *72 /Font.PixelsPerInch
Si une valeur positive est affectée àla propriétéSize,la propriétéHeight de la fonte prend une valeur négative.A l'inverse,si une valeur positive est affectée àla propriétéHeight,la propriétéSize de la fonte devient un nombre négatif.
ET
HEIGHT
Spécifie la hauteur de la fonte.
Syntaxe Delphi :
propertyHeight:Integer;
Syntaxe C++:
__property intHeight ={read=GetHeight,write=SetHeight,nodefault};
Description
Utilisez la propriétéHeight pour spécifier la hauteur de la fonte en pixels.Si la valeur est négative,le talus interne,apparaissant au-dessus de chaque ligne de texte n'est pas mesuré.Si la valeur est positive,Height représente la hauteur des caractères plus le talus interne.
Pour spécifier la taille de la fonte en points,utilisez la propriétéSize.Les utilisateurs spécifient généralement une taille de fonte en points dans une application,tandis que les programmeurs utilisent généralement la taille réelle d'une fonte en pixels pendant l'affichage d'une fonte àl'écran.
La valeur de la propriétéHeight est déterminée àpartir de la hauteur en points au moyen de la formule suivante :
Font.Height =-Font.Size *Font.PixelsPerInch /72
A l'inverse,si une valeur positive est affectée àla propriétéHeight,la propriétéSize de la fonte devient un nombre négatif.Si une valeur positive est affectée àla propriétéSize,la propriétéHeight de la fonte prend une valeur négative.
Attention SIZE et HEIGHT ce modifie l'un l'autre (Change Size change height et reciproquement)
Et certaines fonte de caractères ne support que certaine tailles.
Dans ce cas vous pouvez essayer de jouer sur PixelsPerInch mais ce n'est pas toujour probant.
Oui, c'est ça mon problème, j'ai essayé avec Height et Size mais chacun modifie l'autre réciproquement.
Y a pas une autre soluce?
salut , je te donne une procedure que j'utilise , peut etre pourra tu en faire quelque chose , elle permet d'ecrire dans tout les sens et si mes souvenir sont bon tu peu definir la hauteur et la largeur..
LgFnt.lfQuality => const..
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
31
32
33
34
35
36
37
38 procedure TfconfigMux.afficheTexteVertival(texte:string;Destination:Tlabel;Size:integer); var LgFnt : TLogFont; Fnt : TFont; st : string; X,Y,H,L:integer; begin if texte<>'' then begin st:=Destination.name; end; st:=Destination.name; Destination.Canvas.Font.Name :=Police; Destination.Canvas.Font.style:=[Fsbold]; Fnt := TFont.Create; Fnt.Assign(Destination.Canvas.Font); GetObject(Fnt.Handle, sizeof(LgFnt), @LgFnt); LgFnt.lfEscapement :=900; LgFnt.lfQuality := ANTIALIASED_QUALITY; LgFnt.lfHeight :=20; LgFnt.lfWidth := round(LgFnt.lfHeight / 2.5 ); LgFnt.lfWeight :=1; Fnt.Handle := CreateFontIndirect(LgFnt); Destination.Canvas.Font.Assign(Fnt); Destination.Canvas.Font.color:=clgray; H:=Destination.Canvas.TextHeight(texte); L:=Destination.Canvas.Textwidth(texte); X:=(destination.Width-H) div 2 ; Y:=(destination.Height-L) div 2 ; Y:=destination.Height-Y; Fnt.Free; Destination.Canvas.TextOut(X,Y,texte);
DEFAULT_QUALITY
DRAFT_QUALITY
PROOF_QUALITY
NONANTIALIASED_QUALITY
ANTIALIASED_QUALITY
Bye .
Bonjour,
En ce qui concerne le height et le size qui se modifie les un les autres il n'y a rien a fair. C'est le comportement normale.
Essayer en changant le PixelByInch, cela peux fonctionner. Si cela ne marche pas, essayer de contourner le problème comme le sugère PetitCoucou31.
Salut Petitcoucou31,
En chipotant un peu avec ton code j'y suis arrivé.
Merci beaucoup.
Partager