Entwickler-Ecke
WinForms - Länge formatierter Text aus RichTextBox in Zentimeter
RalphHoffmann - Sa 10.10.15 16:30
Titel: Länge formatierter Text aus RichTextBox in Zentimeter
Hallo,
ich möchte
1.) den in einer RichTextBox eingegebenen, formatierten Text in einer Variablen speichern, ohne dass die Formatierungen verloren gehen.
2.) die Länge in Zentimetern eines Textes ermitteln, der in einer RichTextBox eingegeben und auch formatiert (fett, kursiv, unterstriche und jeglich Kombination)
werden kann.
Wie kann ich das bei C# machen?
Gruß
Ralph
Moderiert von
Th69: Topic aus C# - Die Sprache verschoben am So 11.10.2015 um 08:57
RalphHoffmann - Sa 07.11.15 17:16
Stimmt davon sprach ich.
Mit der Länge in Zentimetern meinte ich es wörtlich. Ich habe inzwischen gefunden, was ich suchte. Hier der Code dazu:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24:
| private double Umrechnung(RichTextBox rtf) { Point p = rtf.GetPositionFromCharIndex(rtf.TextLength); for (int i=0;i < rtf.Lines.Length;i++) { Point lp = rtf.GetPositionFromCharIndex(rtf.Lines[i].Length); if (lp.X > p.X) p = lp; } return PixelToMillimeter(Convert.ToDouble(p.X + 1), rtf); }
private double PixelToMillimeter(double pixel, RichTextBox rtf) { Graphics g = rtf.CreateGraphics(); return Math.Round(pixel * 25.4 / g.DpiX); } |
Damit kann ich eine Zeichenkette (egal wie formatiert) in eine Länge -hier Millimeter- umrechnen.
Gruß
Ralph
Ralf Jansen - Sa 07.11.15 19:28
Das solltest du mit verschiedene Windows Zoom Stufen in den Windows Versionen ausprobieren die du unterstützen willst. Das konkrete Dpi Verhalten hat mehrmals hin und hergewechselt. Auf manchen Windows Versionen ist DpiX fix egal wie man zoomt und dann gibt es auch noch 2 Möglichkeiten (nativ vs. XP Kompatibilität) dazu noch ob du deine Anwendung als DPI Aware markiert hast und vermutlich noch ein paar weitere Abhängigkeiten die da reinspielen. Das ganze Dpi Ding ist mittlerweile zu Verfahren und komplex um auch nur anzunehmen das wenn ein Dpi abhängiges Verfahren auf einem System funktioniert das es das auch auf jedem/einem anderen auch macht.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!