2011-01-17 13 views
0


Wir haben eine große Leinwand in einem Scrollviewer enthalten. Der Benutzer kann die Arbeitsfläche durch Ziehen mit der Maus oder mithilfe der Bildlaufleisten verschieben.
Wie können wir den Zoom (Skalierung) im Scrollviewer ändern und dabei den aktuellen Mittelpunkt beibehalten?
Ich denke, das Problem ist die richtige CenterX und CenterY für die Scaletransform bekommen:SL4: Wie ändere ich die Skala ohne Scrollen der Leinwand?

 var st = MapCanvas.RenderTransform as ScaleTransform; 
     if (null != st) 
     { 
      st.CenterX = point.X; 
      st.CenterY = point.Y; 
      st.ScaleX = st.ScaleY = scale; 
     } 

Vielen Dank für alle Hinweise ...

Antwort

0

Es ist eine Weile her, seit ich bei Transformationen gesucht, aber Sie möchten vielleicht versuchen, die Render von MapCanvas zu new Point(0.5, 0.5) Einstellung (oder legen sie es in XAML)

+0

Danke für die Antwort, aber das klingt wie es die Leinwand in der Mitte wird Scroll, die _nicht_ ist das, was ich will. Wenn die Leinwand 1000 x 1000 ist und die Leinwandkoordinate 200, 200 in der Mitte der SV ist, möchte ich die Leinwandkoordinate 200, 200 zentriert halten, wenn sich die Skala ändert. – Number8

+0

Ah, ich verstehe. Mississippo - Entschuldigung, ich bin mir nicht sicher, wie ich das machen soll, was du suchst. –

Verwandte Themen