GuiLabel - Breite des Elements / Länge des Textes

  • Hi @red51,


    in einigen Situationen ist der Text der in einem GuiLabel angezeigt wird etwas zu lang. Jetzt würde ich gerne hingehen und den Text automatisch verkürzen (z.B. abc...xyz), dafür müsste ich aber herausbekommen wie breit der Text (in % oder px) ist, wenn Font und Size angewendet wird.


    Hilfreich wehre, auch wenn ich die % und px umrechnen könnte, leider fehlt mir dafür der überblick.


    Hättest du da eine Idee für ein "Work araund" oder eine Funktion zur Hand?


    ?(

  • Jetzt würde ich gerne hingehen und den Text automatisch verkürzen (z.B. abc...xyz), dafür müsste ich aber herausbekommen wie breit der Text (in % oder px) ist, wenn Font und Size angewendet wird

    Das stimmt, das ist leider wirklich etwas problematisch... das Problem ist, dass die GUI serverseitig nicht vorhanden ist, d.h. der Server "weiß" effektiv nicht wirklich, wie groß das GUI Element bei relativen Koordinaten tatsächlich ist. Diese Informationen hat nur der Client...


    Mein Vorschlag wäre, dass du versuchst, deine GUI an eine Auflösung von 1920x1080 (also FullHD) anzupassen, da diese Auflösung mit Abstand am weitesten verbreitet ist. Wenn du diese Auflösung bei dir einstellst, kannst du ich an den jeweiligen Größen und Positionen der GUI Elemente orientieren, dann wird das hinterher normalerweise bei anderen Spielern mit derselben Auflösung genauso aussehen.


    Ist leider keine ganz so zufriedenstellende Lösung, aber ich fürchte, dass das momentan die einzige Möglichkeit ist :|


    Hilfreich wehre, auch wenn ich die % und px umrechnen könnte, leider fehlt mir dafür der überblick.

    Hier könntest du ggf. die "Player.getScreenResolutionX()" und "Player.getScreenResolutionY()" Funktionen verwenden (diese liefern die aktuelle Auflösung [Breite/Höhe] des Clients zurück). Wenn du bspw. ein GUI Element mit relativen Größenangaben hast, könntest du diese so umrechnen:

    Java
    GuiElement element = ...;
    float absWidth = element.getWidth() * player.getScreenResolutionX();
    float absHeight = element.getHeight() * player.getScreenResolutionY();

    Bei Labels wird das leider nicht funktionieren, da diese keine expliziten Größenangaben haben (sondern die Größe wird erst clientseitig abhängig vom Font und der Fontgröße bestimmt) :/

  • Oke, danke :thumbup:
    Die player.getScreenResolution hilft mir auf jeden Fall weiter.


    Auch sehr hilfreich für den Fenstermodus.


    Ich hatte das Seitenverhältnis bislang immer mit Phi (1.61803399) angesetzt, aber mit ScreenResolution bekomme ich das ja genau heraus und kann dann die Schrift vermessen und eine Referenztabelle erstellen :thumbsup:

  • Hi @red51,


    noch mal ein gedanke zu dem Thema.


    in jiw-gui.jar\de\jiw\gui\resources\Fonts\Default.fnt hab ich Font Daten gefunden.Wenn ich das richtig Verstehe kann ich hier das Verhältnis der height=50px mit der Label.FontSize=24px=?FontHeight?, über width=25px die Passende "FontWidth=12px" Berechnen? Wobei die "id=97" gleich "ascii=97" dem "a" entspricht? (ich befürchte schon, das nicht)?


    Kann ich die Daten/Datei aus dem Spiel Laden, oder Extrhiere ich sie einfacher nach resources?
    Wie kann ich eigendlich andere Daten, wie Textdatein, aus den resources laden :?:
    Bislang klappt das nur mit Bilder, Saund und Modelle.




    Danke schon mal ^^.


    ### Edit: ||
    Oke, mann Muss den Pfad richtig angeben und das ganze als Stream laden. :cursing:
    Das geht natürlich auch mit Externen Datein. :D


    die letzte Fage kriege ich auch noch raus 8)

Participate now!

Don’t have an account yet? Create a new account now and be part of our community!