Seite 1 von 1

Drucken

Verfasst: 07.08.2005 19:10
von sen-me
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

Verfasst: 07.08.2005 19:39
von Green Snake
ich weis nicht obs mit TextLength() geht...
*glaube weniger, kommt darauf an, wo du drucken willst.*

Verfasst: 07.08.2005 19:43
von Franky
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:

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
hdc muss einfach den Wert erhalten den StartDrawing() zurückgibt:

Code: Alles auswählen

hdc = StartDrawing(ImageOutput())
GetTextHeight(hdc)
Vorher musst du natürlich alles einstellen, was es ein zu stellen gibt (Schriftart,Größe usw)

Verfasst: 07.08.2005 19:44
von sen-me
wie wo du drucken willst O.o

Verfasst: 07.08.2005 19:49
von sen-me
am besten sag ichs mal so

ich will ne seite schreiben die in etwa so aussieht

(mittig)Liste

(links)(bild)☻ item1
☻ item2
☻ item3
☻ ....
☻ item52


so alles in Arial und schwarz

Liste soll größe 90 haben und alles andre größe 30

Verfasst: 10.08.2005 23:32
von Mr.X
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 ...

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)
#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

Verfasst: 11.08.2005 00:40
von sen-me
thx, aber hat sich erldigt, genauso wie das programm -.-
für den ich das geschrieben hatte, brauchte es nicht mehr /:->