Tôi cần có thể phóng to và thu nhỏ Canvas bằng cách sử dụng con lăn chuột. Tôi đã thiết lập thành công trình xử lý bánh xe chuột và hiện đang sử dụng ScaleTransform để áp dụng thu phóng; tuy nhiên, việc chia tỷ lệ không được thực hiện theo cách "trực quan".Silverlight 3 - ScaleTransform hoặc phương pháp khác để phóng to trong Canvas?
Tôi đang cố gắng thực hiện cùng một kiểu "thu phóng" như bạn có thể thấy trong MultiScaleImage, Google Maps/Earth hoặc Adobe Acrobat Reader - nhưng KHÔNG có hình ảnh có kiểm soát. Quá trình chuyển đổi không cần phải "mượt mà" hoặc hoạt ảnh (trừ khi đó là cách tiếp cận dễ dàng hơn), nhưng chức năng cần phải giống nhau.
Bất kỳ ý tưởng hay ý tưởng nào sẽ được đánh giá cao và cảm ơn trước!
Edit: Tôi đã quản lý để "trơn tru" zoom sử dụng hình ảnh động:
<Canvas.Resources>
<Storyboard x:Name="ZoomStoryboard">
<DoubleAnimation x:Name="ZoomAnimationX"
Storyboard.TargetName="Workspace"
Storyboard.TargetProperty="Canvas.RenderTransform.ScaleTransform.ScaleX"
Duration="0:0:0.2"/>
<DoubleAnimation x:Name="ZoomAnimationY"
Storyboard.TargetName="Workspace"
Storyboard.TargetProperty="Canvas.RenderTransform.ScaleTransform.ScaleY"
Duration="0:0:0.2"/>
</Storyboard>
</Canvas.Resources>
với đoạn mã sau:
_Zoom += (args.Delta/7);
if (_Zoom < 0.15)
_Zoom = 0.15;
ZoomAnimationX.To = _Zoom;
ZoomAnimationY.To = _Zoom;
ZoomStoryboard.Begin();
ZoomScale.Text = _Zoom.ToString("0.00") + "x";
_PreviousMousePosition = _CurrentMousePosition
Tuy nhiên, vấn đề này vẫn phát sinh mà nó được thu nhỏ của góc trên cùng bên trái, trái ngược với các trang web như Google Maps, nơi phóng to "xung quanh" con chuột.
Cảm ơn nguồn :) +1 –
CenterAnimation là gì? – Erix