Frage

Ich bin in der Vergangenheit miteinander verbunden mit Dies Antwort auf eine ähnliche Frage zum Konvertieren von WPF -Pixelkoordinaten in Desktop -Desktops. Ich bin mir jedoch nicht sicher, ob ich die beteiligten Mathematik verstehe.

Astonish 'Antwort besagt, dass "Pixel pro WPF -Einheit = constantwPfUnit -Größe * DPI überwachen;" und dass "die konstante WPF -Einheitsgröße 1/96 beträgt".

In meinem Fall habe ich den DPI aus einem Grafikobjekt genommen, das aus dem Bitmap -Objekt erstellt wurde (da ich die Eigenschaft nicht fanden konnte, von der ich sprach), von dem ich nach einem Screenshot des Desktops erstellt habe, also habe ich:

Graphics g = Graphics.FromImage(bitmap);
float WpfUnit = (1 / 96) * g.DpiX;

Da die DPI, die aus dem Grafikobjekt zurückgegeben wird

WpfUnit = (1 / 96) * 96 = 1

WPFunit wird jedoch für einen unbekannten (für mich) Grund als 0 veröffentlicht. Der einzige Weg, den ich sehen kann, um dies zu beheben, besteht darin, dies zu sagen

if(WpfUnit == 0) WpfUnit = 1;

Und selbst das behebt das Problem nicht wirklich, da der Höhenwert und die Top -Werte, wenn sie mit dem WPFunit multipliziert werden, wie in der verknüpften Antwort vorgeschlagen, ihnen nichts angetan haben, abgesehen davon, dass sie mit 1 multipliziert werden.

Zusammenfassend bin ich immer noch an der Konvertierung von WPF -Pixeln in Desktop -Pixel. Jede Hilfe dazu wäre sehr geschätzt.

War es hilfreich?

Lösung

Wie wäre es mit integriert PointToscreen und Point Fromscreen Methoden? Oder vermisst ich etwas?

Andere Tipps

WPFunit kommt als Null heraus, weil es mit dem 1/96 ganzzahlige Mathematik macht. Erklären Sie diese Zahlen explizit als Schwimmer.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top