2012-02-25 35 views
5

Mục tiêu cuối cùng của tôi là triển khai ứng dụng như http://www.crystal.ch/abb/power_systems_landscape/ bằng cách sử dụng html5.HTML5 canvas lớn - di chuyển và phóng to toàn bộ nội dung bao gồm nền

Như bạn thấy, chúng tôi có thể cần một canvas lớn (2000 * 600), nhưng tôi không chắc chắn.

Có ai có thể cho tôi ý tưởng chỉ vì hành vi sau của liên kết ở trên không?

  1. nội dung canvas toàn bộ bao gồm cả nền có thể di chuyển trái-phải trơn tru bằng MouseMove và mousedown hoạt động
  2. toàn bộ nội dung bạt di chuyển bao gồm cả nền trái-phải suôn sẻ theo hệ thống lựa chọn điện
  3. Phóng to thu nhỏ
  4. Hiệu ứng mờ dần như cộng với vòng tròn mang tính biểu tượng

Bất kỳ loại ý tưởng nào cũng sẽ được đánh giá cao.

Trả lời

3

về cơ bản bạn muốn một cái gì đó như thế này

<div id='wrapper' style='position: overflow: hidden; relative; width: 500px; height: 300px;> 
    <canvas id='canvas' width='2000' height='600'></canvas> 
<div> 

sau đó khi bạn muốn di chuyển bạn sẽ làm điều gì đó như

document.getElementById('wrapper').scrollTo(x, y); 

và zoom sẽ

document.getElementById('canvas').style.width = 2000 * zoom; 
document.getElementById('canvas').style.height = 600 * zoom; 

Bạn có thể chơi xung quanh với setInterval và những gì không có để cuộn và thu phóng đẹp và mượt mà, nhưng điều đó chắc chắn là cách nhanh nhất để có được hiệu ứng đó trên canvas lớn vì không có vẽ lại liên quan.

+0

Xin cảm ơn câu trả lời của bạn. Theo tôi thử nghiệm, khái niệm cuộn có thể được thực thi. nhưng đã nhầm lẫn với thu phóng. thay đổi chiều rộng và chiều cao của canvas không ảnh hưởng đến việc vẽ nội dung bên trong canvas. Có thể chúng ta cần vẽ lại mọi thứ dựa trên chiều rộng và chiều cao thay đổi. Dù sao, vẫn tìm kiếm ý tưởng ứng xử "4. Làm mờ hiệu ứng như cộng với vòng tròn mang tính biểu tượng" – Shahdat

+0

bằng cách thay đổi chiều rộng/chiều cao CSS o canvas, bạn phóng to nó mà không vẽ lại nó. Đối với những ưu điểm nhỏ, tốt nhất bạn nên đặt một số div, hoặc canvases nhỏ trên canvas lớn hơn và bạn có thể sử dụng tweens thuộc tính javascript/CSS chuẩn để đạt được hiệu ứng fade in/out hoặc expand/collapse. Có rất nhiều tài nguyên trên đó về loại công cụ đó. – hobberwickey

+0

Bằng cách thay đổi chiều rộng/chiều cao CSS của canvas, tràn được cắt bớt và phần còn lại của nội dung trở nên vô hình. Ý tôi là không phóng to nó. Kính trọng phai Tôi muốn kiểm tra bằng cách di chuyển nhỏ trên đường vải lớn. cảm ơn – Shahdat

0

Tôi khuyên bạn nếu bạn đang làm việc trong canvas js 2D, không sử dụng thu phóng hoặc di chuyển phần tử canvas hoặc bất kỳ phần tử html nào khác, bạn nên viết một thuật toán trong hàm vẽ. Zoom là cái chết của chất lượng và tốc độ và có thể phức tạp từ zoomin để phóng to (Đừng quên tất cả dữ liệu có thể nhìn thấy trên vải chỉ là một hình ảnh). Tôi đã quản lý để tải lên hình ảnh gồm 13000 px và nhiều hình đại diện để hiển thị tất cả thuật toán trong các chức năng vẽ/cập nhật.

Nếu bạn sử dụng 2 canvas, bạn có thể cắt từ mã hình ảnh lớn và sau đó tổng hợp thành bản đồ trực quan.

Nếu bạn có quá nhiều chiều rộng hình ảnh> 3000 ps phải được chia cho mức độ thấp hơn (trên thiết bị iOS cho hình ảnh ~> 3000px có kích thước âm - hình ảnh nhỏ hơn).

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