hmmm ich wollt was mit drucken machen, aba da kommt mir nen rätzel auf
wie kann ich rausfinden, wo ich ansetzen muss, damit der text in der mitte ist?
oda gibts da ne extra funktion?
printerpagewidth() / 2 bringt ja nicht viel, da man dan ja nur die helfte hat, aber da fehlt noch die größe des textes (PrinterPageWidth()/2-textbreite)
aber wie kann ich rausfinden, wie breit der text ist O.o
- Green Snake
- Beiträge: 1394
- Registriert: 22.02.2005 19:08
Hi sen-me
Also, es gibt die Funktion TextLength(), mit der du rausfinden kannst, wieviel platz dein Text weg nimmt.
Wenn du den zurückgegebenen Wert durch 2 Teilst und dann von deinem PrinterPageWidth()/2 abziehst, hast du schonmal die X-Koordinate.
Für die YKoordinate musst du das gleiche machen, allerdings mit dieser Procedure:
hdc muss einfach den Wert erhalten den StartDrawing() zurückgibt:
Vorher musst du natürlich alles einstellen, was es ein zu stellen gibt (Schriftart,Größe usw)
Also, es gibt die Funktion TextLength(), mit der du rausfinden kannst, wieviel platz dein Text weg nimmt.
Wenn du den zurückgegebenen Wert durch 2 Teilst und dann von deinem PrinterPageWidth()/2 abziehst, hast du schonmal die X-Koordinate.
Für die YKoordinate musst du das gleiche machen, allerdings mit dieser Procedure:
Code: Alles auswählen
Procedure GetTextHeight(hdc) ; <-- Procedure by GPI
tm.textmetric
PrevMapMode = SetMapMode_(hdc, #mm_text)
GetTextMetrics_(hdc, tm)
If PrevMapMode
SetMapMode_(hdc, PrevMapMode)
EndIf
ProcedureReturn tm\tmHeight
EndProcedure
Code: Alles auswählen
hdc = StartDrawing(ImageOutput())
GetTextHeight(hdc)
Falsch zugeordnetes Zitat des Tages: "O'zapft is" - Edward Snowden 
Moin-moin sen-me,
ich hatte grad keine Lust Dein Anliegen genau zu verstehen, aber vielleicht kannst Du mit den folgenden Code-Schnipseln was anfangen ...
#PG_Feeder ist eine Text-Konstante - hier wäre auch eine Textvariable denkbar.
#TTF_Arial08 ist halt meine FontID für besagten Font.
Und die Funktiom mm() wandelt die Druckposition in mm in die Pixelpsition für die Druckausgabe um.
Bis denne
Mr.X
ich hatte grad keine Lust Dein Anliegen genau zu verstehen, aber vielleicht kannst Du mit den folgenden Code-Schnipseln was anfangen ...
Code: Alles auswählen
Procedure CenterX (OffsetX, Width, TextLen)
Debug "> OffsetX " +Str(OffsetX)
Debug "> Width " +Str(Width)
Debug "> Textlen " +Str(TextLen)
Debug "< Result " +Str((Width/2)+OffsetX-(TextLen/2))
ProcedureReturn (Width/2)+OffsetX-(TextLen/2)
EndProcedure
Code: Alles auswählen
DrawingFont(UseFont(#TTF_Arial08))
Locate (CenterX(mm(10), mm(277), TextLength(#PG_Feeder)), mm(197)) : DrawText(#PG_Feeder)
#TTF_Arial08 ist halt meine FontID für besagten Font.
Und die Funktiom mm() wandelt die Druckposition in mm in die Pixelpsition für die Druckausgabe um.
Bis denne
Mr.X