2008-09-25 60 views
16

Tôi có Canvas nơi tôi đang vẽ một loạt hình dạng và các yếu tố giao diện người dùng khác. Canvas này có thể rất lớn vì vậy tôi muốn đặt nó trong một bảng điều khiển cho phép tôi phóng to/thu nhỏ bằng cách sử dụng chuột và cuộn bằng cách kéo chuột, giống như Google Maps. Điều gần nhất tôi có thể tìm thấy là ScrollViewer nhưng rõ ràng điều này không đủ gần.Bảng điều khiển cuộn Google Maps giống như trong WPF

Có ai đã thực hiện việc này trong WPF và có bất kỳ mã XAML và/hoặc C# nào không?

+2

1 cho câu hỏi này - Tôi muốn nhìn thấy một cái gì đó như thế này quá! =) –

Trả lời

4

tôi asked last week liệu DeepZoom được lên kế hoạch cho WPF (vì nó có sẵn trên Silverlight). Tôi đã nhận được liên kết tới mã này nghe có vẻ rất giống với giải pháp mong muốn của bạn: Pan and Zoom in WPF

+0

+1 cho liên kết tuyệt vời - SO FTW ... – jnoss

2

Tôi nghĩ bạn đang đi đúng hướng bằng cách sử dụng canvas/lưới lớn với ScrollViewer. Gần đây tôi đã thực hiện điều gì đó tương tự bằng cách sử dụng cùng một thiết lập.

Để phóng to và thu nhỏ, bạn có thể sử dụng ScaleTransform trong thuộc tính LayoutTransform của canvas, sau đó móc điều đó lên sự kiện MouseWheel. Bạn có thể thay đổi ScaleX và ScaleY để "thu nhỏ" vào và ra, và tất cả các phần tử con của canvas cũng sẽ "thu phóng".

Để panning, bạn có thể ẩn các thanh cuộn trong ScrollViewer và sử dụng sự kiện MouseMove để gọi hàm ScrollViewers ScrollToHorizontalOffset() để di chuyển các thanh cuộn theo chương trình. Sử dụng liên kết mà "Giải pháp tối ưu" được đăng, đó chính xác là cách thực hiện.

Nếu tôi ở máy tính của mình, tôi có thể cung cấp cho bạn một số mã ví dụ.

0

Check-out this bài viết CodeProject bởi Sacha ... Ông có một FrictionScrollViewer mà không được di chuyển bằng cách kéo chuột (cũng hỗ trợ một số vật lý ...)

Các vấn đề liên quan