drawtext rechts ausrichten

Anfängerfragen zum Programmieren mit PureBasic.
sobi
Beiträge: 170
Registriert: 05.02.2005 23:41
Wohnort: passau
Kontaktdaten:

drawtext rechts ausrichten

Beitrag von sobi »

Hallo Jungs und Mädels,

wie ist es möglich, einen Text über "DrawText" rechts auszurichten?

Liebe Grüße,
Simon
Sorgen sind wie Blumen, wenn man sie nicht gießt, gehen sie ein.
Benutzeravatar
Pelagio
Beiträge: 424
Registriert: 11.11.2004 17:52
Computerausstattung: AMD Ryzen 5 7600 6-Core Prozessor 3.80 GHz
16,0 GB Arbeitsspeicher
Windows 11 Pro Betriebssystem
Wohnort: Bremen

Beitrag von Pelagio »

Hallo sobi,

versuch es doch mal mit Locate, habe leider keine Zeit für längere ausführung, daher ein Codesnipsel als Beispiel:

Code: Alles auswählen

If OpenWindow(0, 10, 10, 100, 100, #PB_Window_SystemMenu|#PB_Window_ScreenCentered, "PureBasic Window") 
   
   If StartDrawing(WindowOutput())
      Locate(10, 10): DrawText("Teststring")
      Locate(48, 30): DrawText("Test")
      Locate(40, 50): DrawText("String")
      StopDrawing()
   EndIf
      
   Repeat
      myEvent.l = WaitWindowEvent()
   Until (myEvent=#PB_Event_CloseWindow)
   
EndIf
Benutzeravatar
Tafkadasom2k5
Beiträge: 1578
Registriert: 13.08.2005 14:31
Kontaktdaten:

Beitrag von Tafkadasom2k5 »

Als totaler Schwachkopf und Anfänger rate ich mal....

....mit Leerzeichen?

Klappt bestimmt-is bloss umständlich wei dus ausprobioeren musst.... :lol:


Ich hab ansonsten keine Ahnung....aber versuche dir immerhin zu helfen....;)
Gr33tz
Tafkadasom2k5 :)
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
Benutzeravatar
Green Snake
Beiträge: 1394
Registriert: 22.02.2005 19:08

Beitrag von Green Snake »

habs nicht probiert, sollte aber damit zu berechnen sein :wink:

Code: Alles auswählen

TextLength()

Syntax

Länge = TextLength(Text$) 
Beschreibung

Ermittelt die Länge (in Pixel) des angegebenen Strings, der auf dem aktuellen Ausgabekanal mittels des aktuellen Zeichensatzes dargestellt wird. Diese Funktion ist sehr nützlich, um die tatsächliche Länge eines mit einem nicht-proportionalen Zeichensatz dargestellten Strings zu ermitteln. 
Unterstützte OS 

All
ps: da die hilfe eine hilfe ist, hilft sie bestimmt immer, wenn jemand hilfe von der hilfe braucht^^
-.-"
sobi
Beiträge: 170
Registriert: 05.02.2005 23:41
Wohnort: passau
Kontaktdaten:

Beitrag von sobi »

Code: Alles auswählen

Länge = TextLength(Text$) 
Dankeschön, damit müsste es funktionieren! :)

@Pelagio
danke für deine Antwort. Allerdings brauche ich ihn rechts ausgerichtetet nicht links.

@Tafkadasom2k5
Is ein bisschen Umständlich und wenn ich nur zwei Zeilen hätte, würde ich das auch so machen, aber bei mehr Zeilen...? :) [außerdem ist das "nicht so schön] :)


Liebe Grüße,


Simon
Sorgen sind wie Blumen, wenn man sie nicht gießt, gehen sie ein.
sobi
Beiträge: 170
Registriert: 05.02.2005 23:41
Wohnort: passau
Kontaktdaten:

Re: drawtext rechts ausrichten

Beitrag von sobi »

sobi hat geschrieben: wie ist es möglich, einen Text über "DrawText" rechts auszurichten?
Danke für jeden Hinweis. Ich habe das so gelöst:

Code: Alles auswählen

Procedure DT_rechts(Text$,  x, y)  
  l=TextLength(Text$)
  Locate(x-l,y) 
  DrawingFont(LoadFont (2, "Arial", 10))
  DrawText(Text$) 
EndProcedure
Sorgen sind wie Blumen, wenn man sie nicht gießt, gehen sie ein.
Benutzeravatar
shadow
Beiträge: 189
Registriert: 23.03.2005 17:52
Wohnort: Lübeck

Beitrag von shadow »

Hmm, um die Länge des Textes in Pixel genau ermitteln zu können, musst du den Font vorher laden und als Zeichenfont setzen :wink:
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

shadow hat geschrieben:Hmm, um die Länge des Textes in Pixel genau ermitteln zu können, musst du den Font vorher laden und als Zeichenfont setzen :wink:
Er hats doch mittels

Code: Alles auswählen

TextLength(Text$)
gelöst.
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.
Benutzeravatar
shadow
Beiträge: 189
Registriert: 23.03.2005 17:52
Wohnort: Lübeck

Beitrag von shadow »

ja, aber da wird die länge mit dem aktuell geladenen font ermittelt. erst nach dem TextLength() lädt er ja den font und gibt ihn aus. d. h. wenn er von Courier auf Verdana wechselt stimmt die länge nicht mehr.

so meine ich das:

Code: Alles auswählen

Procedure DT_rechts(Text$,  x, y) 
  DrawingFont(LoadFont (2, "Arial", 10))
  l=TextLength(Text$)
  Locate(x-l,y)
  DrawText(Text$)
EndProcedure 
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

shadow hat geschrieben:ja, aber da wird die länge mit dem aktuell geladenen font ermittelt. erst nach dem TextLength() lädt er ja den font und gibt ihn aus. d. h. wenn er von Courier auf Verdana wechselt stimmt die länge nicht mehr.

so meine ich das:

Code: Alles auswählen

Procedure DT_rechts(Text$,  x, y) 
  DrawingFont(LoadFont (2, "Arial", 10))
  l=TextLength(Text$)
  Locate(x-l,y)
  DrawText(Text$)
EndProcedure 
aso, ja da hast du recht.
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.
Antworten