11 Stimmen

Ermitteln der Größe eines Elements in einer ViewBox (nachdem es "gestreckt" wurde)

Bedenken Sie Folgendes:

Nehmen wir an, das Fenster ist 1024x768 und die ViewBox füllt das gesamte Fenster aus, Das bedeutet, dass die TextBox sehr groß auf dem Bildschirm ist.

Ich möchte die Größe der TextBox abrufen, wie sie derzeit auf dem Bildschirm angezeigt wird. Wenn ich DesiredSize oder ActualSize oder sogar RenderedSize erhalte, erhalte ich immer 100.

Irgendwelche Vorschläge?

Aktualisierung: Ich könnte wahrscheinlich die ActualWidth der ViewBox und teilen Sie es durch die ActualWidth der es Kind, die mir den aktuellen Skalierungsfaktor geben würde und setzen, dass als eine Eigenschaft irgendwie, aber ich bin nicht sicher, dass der beste Weg, es zu tun ist.

23voto

Markus Hütter Punkte 7647

So erhalten Sie die ScaleTransform el ViewBox auf seine Kinder ausübt:

var child = VisualTreeHelper.GetChild(viewBox, 0) as ContainerVisual;
var scale = child.Transform as ScaleTransform;

Hier viewBox ist die ViewBox, in der sich das Textfeld befindet. Dann können Sie einfach multiplizieren scale.ScaleX * textBox.ActualWidth und Sie erhalten die Größe in Bildschirmkoordinaten

Aber es geht noch einfacher! Um die Größe des Textfeldes direkt in Bildschirmkoordinaten zu erhalten, tun Sie dies:

textbox.PointToScreen(new Point(textbox.ActualWidth,textbox.ActualHeight)) - textbox.PointToScreen(new Point(0,0))

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X