Seite 1 von 1
Wie Textposition im TextGadget feststellen?
Verfasst: 01.09.2010 07:29
von Syntacks_Error
Ich gebe Text in einem Textgadget innerhalb einer Scrollarea aus. Die Abschnitte des Texts möchte ich durch Trennlininien o.a. kenzeichnen, wozu mir eine Grafik vorschwebt (Eine farbige Textlinie aus z.B. Leerzeichen geht wohl nicht, ausweislich der Hilfe kann PB so etwas nicht, auch wäre das etwas mickrig). Für die Grafik brauche ich die Position in Pixel, bei der der Textabschnitt aufhört. Wie finde ich die heraus? Meine 1. Idee war, "Zeilenanzahl * Schriftgroeße * irgendwas", aber das funktioniert wohl nicht, weil keine eindeutige Relation zwischen Schriftgröße (Punkte) und Pixelhöhe besteht.
Überhaupt: Um zu wissen, wie groß das Textgadget sein muß, muß ich doch wissen, wieviel Platz der Text braucht. Gibt es da keine Funktion für?
Re: Wie Textposition im TextGadget feststellen?
Verfasst: 01.09.2010 10:06
von c4s
Re: Wie Textposition im TextGadget feststellen?
Verfasst: 01.09.2010 14:14
von Bisonte
Oder mit Simpler Methode :
Code: Alles auswählen
Font = LoadFont(#PB_Any,"Arial",12,#PB_Font_Bold)
Dummy = CreateImage(#PB_Any,20,20)
Text.s = "Hier ist dein zu messender Text"
StartDrawing(ImageOutput(Dummy))
DrawingFont(FontID(Font))
hoehe = TextHeight(Text)
breite = TextWidth(Text)
StopDrawing()
FreeImage(Dummy)
Und schon hast Du komplette Breite und Höhe des gewünschten Textes wenn ein bestimmter Zeichensatz an ist ...
Simpel aber Funktion

Re: Wie Textposition im TextGadget feststellen?
Verfasst: 01.09.2010 18:39
von Syntacks_Error
Interessante Idee. Jetzt muß ich nur noch feststellen, ob es eine feste Beziehung zwischen Texthöhe und Zeilenhöhe gibt (oder das das selbe ist), das erste Programmbeispiel ist da für mich nicht gerade durchsichtig ...
Re: Wie Textposition im TextGadget feststellen?
Verfasst: 02.09.2010 12:46
von Bisonte
Zur Hilfe könntest Du vielleicht ein Bild zeigen, wie Du Dir das vorstellst....
Re: Wie Textposition im TextGadget feststellen?
Verfasst: 04.09.2010 11:56
von Syntacks_Error
Klappt nicht. Das gibt zwar die Höhe des Textes in Pixel, aber es gibt da wohl keine genaue Beziehung zwischen dieser Höhe und der Höhe eine Textzeile im Gadget, jedenfalls verrutscht das nach mehreren Zeilen immer mehr. So ungefähr scheint es Texthöhe * 1, 25 zu sein, aber ein genauer Wert ist nicht zu finden.
Re: Wie Textposition im TextGadget feststellen?
Verfasst: 04.09.2010 14:45
von CSHW89
beispiel aus dem codearchiv:
Code: Alles auswählen
; German forum:
; Author: GPI (updated for PB4.00 by blbltheworm)
; Date: 31. May 2003
; OS: Windows
; Demo: No
; Get the "real" height of an used font (in this example Arial/16 will have a real height of 24)
;see the example, how to get the hdc
Procedure GetTextHeight(hdc)
tm.textmetric
PrevMapMode=SetMapMode_(hdc,#MM_TEXT)
GetTextMetrics_(hdc,tm)
If PrevMapMode
SetMapMode_(hdc,PrevMapMode)
EndIf
ProcedureReturn tm\tmHeight
EndProcedure
LoadFont(0,"Arial",16)
CreateImage(0,100,100)
hdc=StartDrawing(ImageOutput(0)) ; start drawing and get the HDC
DrawingFont(FontID(0)) ; Use the own font
Height=GetTextHeight(hdc) ; how big it is
;draw a text with a pixel-line between the text
DrawText(1,1,"XYZ")
DrawText(1,1+Height+1,"abc")
StopDrawing()
FreeFont(0)
;display it
OpenWindow(0,0,0,100,100,"TEST",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
CreateGadgetList(WindowID(0))
ImageGadget(0,0,0,100,100,ImageID(0))
Repeat
Until WaitWindowEvent()=#PB_Event_CloseWindow
End
vielleicht hilft ja das
lg kevin