Drucken

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
sen-me
Beiträge: 478
Registriert: 17.07.2005 16:02
Wohnort: Saarbrücken
Kontaktdaten:

Drucken

Beitrag 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
Benutzeravatar
Green Snake
Beiträge: 1394
Registriert: 22.02.2005 19:08

Beitrag von Green Snake »

ich weis nicht obs mit TextLength() geht...
*glaube weniger, kommt darauf an, wo du drucken willst.*
-.-"
Benutzeravatar
Franky
Beiträge: 1132
Registriert: 29.08.2004 16:31
Wohnort: Münsterland
Kontaktdaten:

Beitrag 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)
Falsch zugeordnetes Zitat des Tages: "O'zapft is" - Edward Snowden :)
Benutzeravatar
sen-me
Beiträge: 478
Registriert: 17.07.2005 16:02
Wohnort: Saarbrücken
Kontaktdaten:

Beitrag von sen-me »

wie wo du drucken willst O.o
Benutzeravatar
sen-me
Beiträge: 478
Registriert: 17.07.2005 16:02
Wohnort: Saarbrücken
Kontaktdaten:

Beitrag 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
Benutzeravatar
Mr.X
Beiträge: 66
Registriert: 10.08.2005 22:46
Wohnort: im schönen OWL

Beitrag 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
Benutzeravatar
sen-me
Beiträge: 478
Registriert: 17.07.2005 16:02
Wohnort: Saarbrücken
Kontaktdaten:

Beitrag von sen-me »

thx, aber hat sich erldigt, genauso wie das programm -.-
für den ich das geschrieben hatte, brauchte es nicht mehr /:->
Antworten