Tôi đã cố gắng tìm ra cách thích hợp để hiển thị dữ liệu thời gian thực dưới dạng biểu đồ đường trong WPF là gì. Và theo thời gian thực tôi thực sự muốn nói, dữ liệu đang được thu thập từ thiết bị USB tạo dữ liệu ở tốc độ khoảng 40Hz. Có nhiều luồng dữ liệu (tối đa 7) mà tôi đang đọc ở 40Hz theo kiểu không đồng bộ.Biểu đồ/hình ảnh hóa WPF của dữ liệu thời gian thực
Tôi đã thử sử dụng hai giải pháp kệ (biểu đồ Bộ công cụ WPF và biểu đồ Swordfish) và gần như nhìn vào thành phần Hình ảnh động dữ liệu nhưng đã từ bỏ nó sau khi đọc một số nhận xét trên diễn đàn của họ. Dường như các giải pháp biểu đồ không có sẵn được hướng tới các biểu đồ tĩnh và tôi thực sự cần một cái gì đó tương tự như Trình quản lý tác vụ Windows - chỉ nhanh hơn nhiều và với nhiều điểm dữ liệu hơn.
Hiện tại, tôi đã thực hiện giải pháp của riêng mình mà dường như hoạt động tốt nhất cho đến nay nhưng tôi có cảm giác rằng tôi đang thiếu thứ gì đó vì có vẻ như tôi có thể đạt được hiệu suất tốt hơn.
Yêu cầu là nó có thể xử lý khoảng không đổi khoảng 10000 điểm trong cửa sổ trượt - khi dữ liệu mới xuất hiện (ở 40Hz), dữ liệu cũ được đẩy sang bên trái bên ngoài phạm vi hiển thị. Và nó cần phải duy trì tỷ lệ này trong ít nhất 20 - 30 phút (tổng cộng khoảng 75 - 100 nghìn điểm cho mỗi luồng dữ liệu).
Triển khai tùy chỉnh hiện tại của tôi dựa trên thành phần được kế thừa từ Hình dạng và sử dụng StreamingGeometry cho DefinigGeometry. Dữ liệu đến từ thiết bị được chuyển đến thành phần thông qua hàng đợi để cải thiện hiệu suất do "hiệu ứng bùng nổ" vốn có và sau khi thao tác khử, thành phần bị vô hiệu.
Vì vậy, câu hỏi của tôi là, tôi đang đi đúng hướng hay tôi hoàn toàn sai? Cách hiệu quả nhất để thực hiện việc hiển thị dữ liệu như vậy trong WPF là gì? Bất kỳ trợ giúp hoặc gợi ý nào sẽ được đánh giá cao.
InterX interop là hướng. Một số sẽ sử dụng slimDX nhưng đó là một phụ thuộc rất lớn và đường cong học tập trừu tượng. Tôi khuyên bạn nên sử dụng trực tiếp DX9 hoặc (DX11 qua DXGI) vì nó lắc tay với giao diện WP3 D3DImage. Vẫn là một đường cong học tập nhưng giống như slimdx và dễ bảo trì hơn để tạo ra một thiết bị DX, bối cảnh, bộ đệm, đổ bóng và tải ứng dụng của bạn bằng Direct3D. Tài liệu thật khủng khiếp nhưng đủ tốt và khi hoàn thành, bạn đã hoàn thành một thứ gì đó tuyệt vời mà không phụ thuộc vào người khác. Xem thế giới thực của chúng tôi [demo biểu đồ 18 triệu] (http://www.gigasoft.com) với WPF WinForm MFC EXE, phần lớn dữ liệu WAV và GIS âm thanh của nó. – Robert
@Robert, cảm ơn cho đầu vào. Lý tưởng nhất là tôi muốn dính w DX9 tương thích với XP nhưng vì vậy tôi không thể tìm ra không để vẽ các đường dày tùy ý với D3D theo cách có thể so sánh được với các đường dẫn bí danh mà tôi đã đạt được với WPF. Bất kỳ con trỏ? Bạn có phải viết thói quen tesselation của riêng bạn? Tôi thậm chí sẽ được ok với DX10 nếu tôi có thể có được những gì tôi muốn hiệu suất/chất lượng khôn ngoan. –
Đường dày là hạn chế lớn nhất với D3D. Mặc dù nó không phải là một việc lớn. Nếu bạn có thể thiết kế xung quanh kích thước biểu đồ đã biết, thì logic bộ đệm đỉnh sẽ biết kích thước và một vấn đề đơn giản là vẽ đường thẳng làm tứ giác (hình tam giác kép) b) nếu bạn không muốn xây dựng lại bộ đệm đỉnh dựa trên kích thước sự kiện, sau đó đổ bóng nên được thiết kế để giữ tỷ lệ khung hình và kích thước vật lý trong một bộ đệm liên tục, sau đó dữ liệu này được sử dụng trong bóng đổ đỉnh để chỉnh quads dòng của bạn trên bay. Đây là trường hợp của dx9/11. Hoặc bạn có thể sử dụng D2D và logic giảm dữ liệu để vẽ số lượng lớn. – Robert