Hallo, ich habe gleich 3 Fragen. Aber alle bezüglich einer selbst gezeichneten Textbox.
Ich erstelle sehr gerne Mods für GTA und diesesmal wollte ich einen eigenen Chat bauen.
Da man in GTA nicht einfach TextBoxen oder Labels hinzufügen kann, muss ich diese selber zeichnen.
Frage 1: Wie kann ich den Textcursor richtig hinter dem eingegebenen Text platzieren? - ✔ Nicht perfekt aber funktionsfähig
Wie man anhand der Bilder sehen kann, ist der Textcursor nicht richtig hinter dem Text platziert (oder sogar machmal vor dem Text).
Dies ist mein momentaner Code zum zeichnes des Cursors
Spoiler anzeigen
Frage 2: Wie kann ich Nachrichten im Chatlog nach einer entsprechenden Anzahl von Nachrichten nach oben verschieben? - ✔ Funktionsfähig
Diese Frage ist jetzt nicht gerade aussagekräftig also hier nochmal anders erklärt:
Momentan sieht mein Chatlog so aus:
Ich habe jetzt 5 Nachrichten hineingeschreiben.
Ab der 6ten Nachricht sollen sich die bereits vorhandenen Nachrichten eins nach oben schieben, so dass die neue Nachricht ganz unten ist und die anderen Nachrichten sich eines nach oben schieben, aber so das trotzdem nur 5 Nachrichten sichbar sind.
Mein momentaner Code
Spoiler anzeigen
Frage 3 (Optional): Wie funktioniert es wenn der Text vom Rand abgeschnitten wird, dass wenn man weiterschreibt der Text trotzdem lesbar ist? - ❌ Noch nicht abgeschlossen
Code zum anzeigen des textes
Ich erstelle sehr gerne Mods für GTA und diesesmal wollte ich einen eigenen Chat bauen.
Da man in GTA nicht einfach TextBoxen oder Labels hinzufügen kann, muss ich diese selber zeichnen.
Wie man anhand der Bilder sehen kann, ist der Textcursor nicht richtig hinter dem Text platziert (oder sogar machmal vor dem Text).
Dies ist mein momentaner Code zum zeichnes des Cursors
C#-Quellcode
- e.Graphics.DrawText("_", new RectangleF((Game.Resolution.Width - 660f) + (chatInput.Length * 14f), Game.Resolution.Height - 52.5f, 15f, 39f), TextAlignment.Left, Color.White, chatFont); // Caret
- // chatInput = Der eingegebene Text vom User
- // chatFont = Die Schriftart von dem Text
- // chatFont Family = Microsoft Sans Serif
- // chatFont Height = 24f
- // chatFont FontScaling = Pixel
Diese Frage ist jetzt nicht gerade aussagekräftig also hier nochmal anders erklärt:
Momentan sieht mein Chatlog so aus:
Ich habe jetzt 5 Nachrichten hineingeschreiben.
Ab der 6ten Nachricht sollen sich die bereits vorhandenen Nachrichten eins nach oben schieben, so dass die neue Nachricht ganz unten ist und die anderen Nachrichten sich eines nach oben schieben, aber so das trotzdem nur 5 Nachrichten sichbar sind.
Mein momentaner Code
C#-Quellcode
- if (chatMessages.Count > 5)
- {
- // Ab 6 Nachrichten...
- }
- else
- {
- for (int i = 0; i <= chatMessages.Count - 1; i++)
- {
- e.Graphics.DrawText(chatMessages[i].ToString(), new RectangleF(Game.Resolution.Width - 645, (Game.Resolution.Height / 2) - 120 + i * 30, 600f, 27f), TextAlignment.Right, Color.FromArgb(255, 255, 255, 255), chatFont);
- }
- }
Frage 3 (Optional): Wie funktioniert es wenn der Text vom Rand abgeschnitten wird, dass wenn man weiterschreibt der Text trotzdem lesbar ist? - ❌ Noch nicht abgeschlossen
Code zum anzeigen des textes
Wenn ich dir auf irgendeiner Art und Weise helfen konnte, drück doch bitte den "Hilfreich" Button
Für VB.NET Entwickler: Option Strict On nicht vergessen!
Für VB.NET Entwickler: Option Strict On nicht vergessen!
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „ClonkAndre“ ()