2010-01-22 4 views
9

Beachten Sie Folgendes:Ermittelt die Größe in einem ViewBox (nachdem es „streched“ wurde) eines Artikels

Sagen wir, das Fenster 1024x768 ist und die ViewBox füllt das gesamte Fenster , Dies bedeutet, dass die TextBox wirklich groß auf dem Bildschirm ist.

Ich möchte die Größe der TextBox erhalten, wie es gerade auf dem Bildschirm ist. Wenn ich DesiredSize oder ActualSize oder sogar gerenderteSize bekomme, bekomme ich immer 100.

Irgendwelche Vorschläge?

Update: ich wahrscheinlich die ActualWidth des ViewBox bekommen konnte und dividieren sie durch die ActualWidth davon ist Kind, das mir den aktuellen Skalierungsfaktor geben würde und dass irgendwie als Eigenschaft aussetzen, aber ich bin nicht sicher, das ist die beste Weg, es zu tun. Diese

+0

Haben Sie in Betracht gezogen, die "Breite" und "Höhe" -Eigenschaften der TextBox zu überprüfen? – CodeMouse92

+1

@ JasonMc92 - Das würde wirklich nicht helfen, da Breite und Höhe höchstwahrscheinlich null sind. Breite und Höhe werden verwendet, um * Größen * anzufragen, um nicht nach der tatsächlichen Größe zu fragen. –

Antwort

17

ist, wie Sie die ScaleTransform bekommen die ViewBox auf ihre Kinder ausübt.

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

Hier viewBox ist die ViewBox dass Textbox sitzt in Dann können Sie einfach mehrfach scale.ScaleX * textBox.ActualWidth und die Größe in Bildschirmkoordinaten erhalten

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

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