Ich habe eine C# WinForms-Anwendung, die Server-und Client-Seite besteht. Ich verwende TextRenderer.MeasureText(string text, Font font)
Methode, um Text zu messen.TextRenderer: Wie man Text misst, als ob es auf Maschine mit unterschiedlichem Dpi war?
In einem Moment muss ich Text auf der Serverseite messen, als ob es auf dem Client war. Ich sende Graphics.DpiX und Graphics.DpiY Werte von Client zu Server. Basierend auf diesen Werten, wie kann ich Text auf der Serverseite messen? Der entscheidende Punkt ist, dass Client- und Server-DPI unterschiedlich sein können.
Ich denke, ich kann Graphics
Objekt von Dpi-Werte irgendwie erstellen und TextRenderer.MeasureText(IDeviceContext dc, string text, Font font)
Überladung verwenden, um meinen Text zu messen. Aber wie erstellt man Graphics
aus nur DpiX und DpiY Werten?
Erstellen Sie das Graphics-Objekt mit Graphics.FromImage() und verwenden Sie eine Dummy-Bitmap, auf der Sie SetResolution() aufgerufen haben. –
@Hans, wenn ich diesen Weg verwende, gibt 'MeasureString (String Text, Font font) 'Methode des' Graphics' Objekts den korrekten Wert zurück, aber 'TextRenderer' scheint' Graphics.DpiX' und 'Graphics nicht zu übernehmen. DpiY' Werte berücksichtigen. Irgendeine Idee, warum konnte das passieren? Ich möchte nicht die 'Graphics.MeasureString (String Text, Font font)' Methode verwenden, da ich weiß, dass sie ungenau sein könnte. –
ich repro. Das war ziemlich überraschend :) Ich habe keine gute Theorie für dieses Verhalten. –