Imprimer une chaine de caractère à la bonne taille...

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
julien
Messages : 846
Inscription : ven. 30/janv./2004 15:06
Contact :

Imprimer une chaine de caractère à la bonne taille...

Message par julien »

Salut,

Je ne comprend pas trop comment Pb gère la taille des polices.... (l'aide est très légère)

En fait je veux imprimer un texte en taille 16 (sous word). sous PB, le texte est très petite, comment est géré la taille ?

LoadFont(#Police, NomPolice$, Taille [, Options])

Taille est en quoi ?, est ce la valeur récupérable avec la commande FontRequester() et SelectedFontSize() ?


Voici un code, quelqu'un sait ou est l'erreur ou manip à faire ?

Code : Tout sélectionner


 Result.l = FontRequester(FontName$, FontSize, #PB_FontRequester_Effects)




res=LoadFont(1, SelectedFontName(), SelectedFontSize(),SelectedFontColor()|#PB_Font_HighQuality) 
Debug res
If res=0
MessageRequester("","Erreur",0):End
EndIf

 

If PrintRequester()


        If StartPrinting("Impression")
        
            If StartDrawing(PrinterOutput())
           
                  UseFont(1)
                  DrawingFont(FontID())

                  DrawText("Hello")   ;
                 StopDrawing()
                StopPrinting()
             EndIf
        EndIf
EndIf
           
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

Sous windows le rapport point/pixel est de 3/4 (ou 4/3 je sais plus)
Essaye d'imprimer en "16*4/3" et vois si la taille correspond à celle de word

Dri
julien
Messages : 846
Inscription : ven. 30/janv./2004 15:06
Contact :

Message par julien »

Merci pour ton aide
j'ai pas trop compris, mais si je fais comme tu me dit, ça passe de 16 à 21... et c'est très petit (il faudrai dans les 70 pour avoir l'equivalent)

Si Fred pouvait m'expliquer ces commande.... :(
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

Dans ce cas c'est peut être une question de résolution.
Selon le nombre de "dpi" la taille change peut être.

Dri
LavaLava
Messages : 173
Inscription : dim. 28/mars/2004 17:42
Localisation : Provence

Message par LavaLava »

Effectivement c'est une histoire de DPI !
Car la taille de la police est identique pour l'affichage ou l'impression. Si ta police fait 10 pixels à l'ecran elle fera 10 pixel (dot) à l'impression...
Donc selon le dpi de ton imprimante cela sera ecrit plus ou moins grand ...
Il faut donc que tu récupére le dpi vertical et horizontal de ton imprimant puis tu fait une régle de trois pour trover la taille de la fonte d'impression.
LavaLava
Messages : 173
Inscription : dim. 28/mars/2004 17:42
Localisation : Provence

Message par LavaLava »

J'avais récupérer cela sur le forum, cela pourra t'être utile :

Code : Tout sélectionner

If printer_DC 
  DpiLargeur = GetDeviceCaps_(printer_DC,#LOGPIXELSX)
  DpiHauteur = GetDeviceCaps_(printer_DC,#LOGPIXELSY)
  MargeGauche = GetDeviceCaps_(printer_DC,#PHYSICALOFFSETX)
  MargeHaute = GetDeviceCaps_(printer_DC,#PHYSICALOFFSETY)
  LargeurPage = GetDeviceCaps_(printer_DC,#PHYSICALWIDTH)
  HauteurPage = GetDeviceCaps_(printer_DC,#PHYSICALHEIGHT)
  LargeurUtile = GetDeviceCaps_(printer_DC,#HORZRES)
  HauteurUtile = GetDeviceCaps_(printer_DC,#VERTRES)
  StopDrawing()
*
EndIf

Code : Tout sélectionner

IdFont = LoadFont(#Font,NomFonte$,HauteurFonte)
Texte$ = "Toto"
Sd = StartDrawing(ImageOutput())
if Sd
  DrawingFont(IdFont)
  GetTextExtentPoint32_(Sd,@Texte$,Len(Texte$),Size.size) 
  LarqeurTexte = Size\cx ; En Dot
  HauteurTexte = Size\cy ; En Dot
  StopDrawing()
Endif
Pour info si tu utilise une police de taille 20 avec une imprimante en 254 Dpi, la hauteur imprimé sera de :
25,4 / 254 * 20 = 2 mm

Par contre je n'ai aucune idée du rappot qu'utilise Microsoft entre la taille de la police et la taille imprimé ...
en faisant quelques test et mesure au décimétre tu devrais trouver rapidement ...
julien
Messages : 846
Inscription : ven. 30/janv./2004 15:06
Contact :

Message par julien »

Merci de vos réponse, je vais voir cela dès que possible, par contre il serai bien d'avoir ceci dans la doc... (c toujours un +) :D
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

julien a écrit :Merci de vos réponse, je vais voir cela dès que possible, par contre il serai bien d'avoir ceci dans la doc... (c toujours un +) :D
Et quelques fonctions pour connaître ce genre d'informations ^^
Enfin pour le moment tu dois pouvoir te baser sur la "taille" de la page.

PrinterPageWidth()
PrinterPageHeight()

Dri
Répondre