Tôi đang làm việc trên một ứng dụng giống như trò chơi có tới một nghìn hình dạng (hình elip và đường thẳng) liên tục thay đổi ở 60 khung hình/giây. Sau khi đọc một số excellent article on rendering many moving shapes, tôi đã triển khai điều này bằng cách sử dụng con cháu Canvas tùy chỉnh ghi đè OnRender
để thực hiện bản vẽ qua DrawingContext
. Hiệu suất là khá hợp lý, mặc dù việc sử dụng CPU vẫn cao. Tuy nhiên, bài viết gợi ý rằng cách tiếp cận hiệu quả nhất cho các hình ảnh liên tục di chuyển là sử dụng nhiều trường hợp DrawingVisual
thay vì OnRender
. Thật không may mặc dù nó không giải thích được lý do tại sao sẽ nhanh hơn cho trường hợp này.Hiệu suất của DrawingVisual và Canvas.OnRender cho nhiều hình dạng liên tục thay đổi
Thay đổi việc triển khai theo cách này không phải là một nỗ lực nhỏ, vì vậy tôi muốn hiểu lý do và liệu chúng có thể áp dụng cho tôi trước khi quyết định thực hiện chuyển đổi hay không. Tại sao phương pháp tiếp cận DrawingVisual
dẫn đến việc sử dụng CPU thấp hơn cách tiếp cận OnRender
trong trường hợp này?
Romkyns, bạn có thể tạo một số phiên bản đơn giản với DrawingVisual và Canvas.OnRender() để phù hợp với hiệu suất, trước khi bạn nghiên cứu những thay đổi lớn. Về phần trả lời - tôi hoàn toàn đồng ý với Charlie. – Anvaka