Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Phil_GDM

Alter Hase

  • »Phil_GDM« ist der Autor dieses Themas

Beiträge: 443

Wohnort: Graz

Beruf: Student-Softwareentwicklung u. Wissensmanagement

  • Private Nachricht senden

1

25.05.2004, 17:01

C# newline \n in strings

Ich will mit der GDI+ Methode DrawString einen Text zeichen. So ein Text lautet zum Beispiel "Hallo.\nWie gehts".
Die Ausgabe sollte so aussehen:
Hallo.
Wie gehts.

Doch ich bekomme nur das: Hallo.\nWie gehts
auf den Bildschrim
Weiß einer von euch vielleicht, warum das so ist?

CuTeX0r

Treue Seele

Beiträge: 174

Wohnort: Deutschland

  • Private Nachricht senden

2

25.05.2004, 17:19

probier doch mal "\r\n" aus. kA ob das geht, manchmal hilfts.

Klaus

Treue Seele

Beiträge: 245

Wohnort: Stuttgart

Beruf: Schüler

  • Private Nachricht senden

3

25.05.2004, 17:46

Wenn der das \n nicht als Escape-Sequenz erkennt, wird wahrscheinlich \r\n auch nichts helfen. Hast du denn doppelte oder einfache Anführungszeichen verwendet? Wenn das C# ist, könnte das einen Unterschied machen.
Mozilla Firefox
The Browser - reloaded

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

4

25.05.2004, 19:11

Hmmm manchmal hilft auch ein einfaches leerzeichen nach \n.........

Phil_GDM

Alter Hase

  • »Phil_GDM« ist der Autor dieses Themas

Beiträge: 443

Wohnort: Graz

Beruf: Student-Softwareentwicklung u. Wissensmanagement

  • Private Nachricht senden

5

26.05.2004, 13:17

Mit auch schon mit Anführungszeichen usw. versucht funktioniert aber auch nicht. Hab jetzt eine Lösung gefunden, die mir aber nicht besonders gut gefällt. Ich gebe den String derzeit im Formdesigner mit einem ; für ein Newline ein (der Text ist eine Membervariable von einem UserControl). Bevor der Text dann gezeichnet wird, mache ich Folgendes:

Quellcode

1
2
3
4
5
6
7
8
string text;
string [] asLines = m_sText.Split(';');
for(int i = 0; i < asLines.Length; i++
{
   text += asLines[i];
   text += "\n";
}
e.Graphics.DrawString(text, ...);

Wenn ich es so mache, funktioniert es. Irgendwie scheint \n nur zu funktionieren, wenn es durch C#-Code hinzugefügt wird. Ob die Stringklasse irgendwelchen speziellen Codierungen durchführt (Unicode etc.)??. Was meint ihr??

6

26.05.2004, 16:07

C# arbeitet soweit ich weiß mit Unicode, ich kann allerdings nicht C#
WENN DIE NACHT AM TIEFSTEN IST DER TAG AM NÄCHSTEN

Klaus

Treue Seele

Beiträge: 245

Wohnort: Stuttgart

Beruf: Schüler

  • Private Nachricht senden

7

26.05.2004, 18:31

Du musst doch den vom Form Designer kreierten Code acuh veränden können?!
Da kannst du ja mal schauen, wie der deine Newlines umsetzt. Wenn du deinen Text nicht direkt im Code, sondern im Formdesigner in ein Mehrzeiliges Feld eingibst, sollte ein Return (oder unter Umständen Strg+Return) ausreichen...
Mozilla Firefox
The Browser - reloaded

Phil_GDM

Alter Hase

  • »Phil_GDM« ist der Autor dieses Themas

Beiträge: 443

Wohnort: Graz

Beruf: Student-Softwareentwicklung u. Wissensmanagement

  • Private Nachricht senden

8

03.06.2004, 17:18

Sorry dass ich mich erst jetzt wieder melde, bin aber mit meiner Matura ziemlich im Stress.
An Klaus:
Das habe ich schon angesehen. Dort steht nichts anderes als "\n". Aber vielleicht zeigt der Debugger es ja irgendwie verändert an. Hab echt keine Ahnung was ich noch machen soll. Werde meine derzeitige Lösung einfach beibehalten. Ist zwar nicht schön, funktioniert aber ohne Probleme.[/b]

Klaus

Treue Seele

Beiträge: 245

Wohnort: Stuttgart

Beruf: Schüler

  • Private Nachricht senden

9

03.06.2004, 21:22

Ich hab mal aus der Doku n Code Snippet genommen und ein bisschen rumprobiert.
Folgendes funktioniert gleichermaßen gut mit "Sample\r\nText" und "Sample\nText"...

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
    public void DrawStringFloatFormat(PaintEventArgs e)
        {
            
            String drawString = "Sample\r\nText";
            
            Font drawFont = new Font("Arial", 14);
            SolidBrush drawBrush = new SolidBrush(Color.Black);
            
            float x = 0.0F; // Die zwei Werte haben mir nur gut in 
            float y =  400.0F; // meine Applikation gepasst *g* ;)
            
            e.Graphics.DrawString(drawString, drawFont, drawBrush, x, y);
        }



Vielleicht liegt dein Fehler ja wo anders?
Kannst ja mal den entsprechenden Code posten!


Klaus
Mozilla Firefox
The Browser - reloaded

Phil_GDM

Alter Hase

  • »Phil_GDM« ist der Autor dieses Themas

Beiträge: 443

Wohnort: Graz

Beruf: Student-Softwareentwicklung u. Wissensmanagement

  • Private Nachricht senden

10

18.06.2004, 10:18

Quellcode

1
2
3
4
5
public override OnPaint(PaintEventArgs e)
{
      Graphics Graph = e.Graphics;
      Graph.DrawString(this.m_Text, new SolidBrush(this.m_TextColor), this.m_Font, this.m_Rect);
}

//Ungefähr so, hab den Code gerade nicht bei der Hand

Die Mebervariablen (m_Font, m_Text, ...) werden vom Propertyeditor von Visual Studio gesetzt. Vielleicht macht der ja irgendetwas, was er nicht machen sollte???

Werbeanzeige