moin, moin...
Beim Zusammenbasteln einer GUI bin ich auf das Problem gestoßen, daß ich zur genauen Positionierung und Größenbestimmung eine Gadgets (Text, String, Button) die "Ausmaße" des Strings benötige.
Gefunden haben ich allerdings nur "TextLength", daß zum 2D-Bereich gehört und ohne "drawing-object" nicht funktioniert.
Gibts was anderes, das mir weiterhilt ? (BS-unabhängig bevorzugt )
bis denne...
scholly
[erledigt] Stringlänge und -höhe berechnen ?
[erledigt] Stringlänge und -höhe berechnen ?
Zuletzt geändert von scholly am 21.04.2008 23:18, insgesamt 1-mal geändert.
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
seit 17.12.08: PB 4.3 unter XP Home(SP3)
-
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
Ähm das wäre die Punkthöhe, nicht die Pixelhöhe. Außerdem: was ist wenn er keinen Font lädt? Stirbt er dann?Macros hat geschrieben:Ich nehme an, dass du vorher eine schrift reinlädst.
Dann gibst du ja beim Laden die Höhe an, und die Länge
must du wie du gesagt hast über 2D-Drawing ermitteln.

Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
@DarkDragon
Ich hab von Dir das hier aufgestöbert:
http://forums.purebasic.com/german/view ... nge+h%F6he
Allerdings steh ich davor wie der Ox vorm Berg.
Kannst Du das so ändern, daß ich _OHNE_ ein Bild zu sehen, für einen beliebigen Text Länge und Höhe bekomme ?
bittebittebitte
scholly
Ich hab von Dir das hier aufgestöbert:
http://forums.purebasic.com/german/view ... nge+h%F6he
Allerdings steh ich davor wie der Ox vorm Berg.
Kannst Du das so ändern, daß ich _OHNE_ ein Bild zu sehen, für einen beliebigen Text Länge und Höhe bekomme ?
bittebittebitte
scholly
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
seit 17.12.08: PB 4.3 unter XP Home(SP3)
-
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
Code: Alles auswählen
Procedure GetFontHeight(FontID, PtSize)
PtSize * 1.5
Img = CreateImage(#PB_Any, PtSize, PtSize)
StartDrawing(ImageOutput())
DrawingFont(FontID)
Len = TextLength("Mgjf")
StopDrawing()
ResizeImage(Img, PtSize, Len)
StartDrawing(ImageOutput())
DrawingFont(FontID)
Box(0, 0, PtSize, TextLength("Mgjf"), $FFFFFF)
Locate(0, 0)
DrawText("Mgjf")
For x=0 To PtSize-1
For y=0 To PtSize-1
Color = Point(x, y)
If Color = $000000
If y < MinY : MinY = y : EndIf
If y > MaxY : MaxY = y : EndIf
EndIf
Next
Next
StopDrawing()
;ViewImage()
FreeImage(Img)
ProcedureReturn MaxY-MinY
EndProcedure
LoadFont(0, "Times New Roman", 70)
MessageRequester("", Str(GetFontHeight(FontID(), 70)))
CloseFont(0)
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.