Chúng tôi cần tối ưu hóa hiển thị văn bản cho ứng dụng C# Windows Forms hiển thị số lượng lớn các chuỗi nhỏ trong lưới không đều. Bất cứ lúc nào có thể có hơn 5000 tế bào có thể nhìn thấy cập nhật 4 lần mỗi giây. Họ phông chữ và kích thước là nhất quán trên các ô, mặc dù màu sắc có thể thay đổi từ ô này sang ô khác, như sẽ in đậm/nghiêng/đồng bằng.API nhanh nhất để hiển thị văn bản trong Windows Forms?
Tôi đã nhìn thấy mâu thuẫn thông tin trên web về TextRenderer.DrawText
vs Graphics.DrawString
là nhanh nhất/tốt nhất, làm giảm tới một GDI vs GDI+ so sánh ở cấp Win32.
Tôi cũng đã thấy các kết quả hoàn toàn khác nhau trên Windows XP so với Windows Vista, nhưng mục tiêu chính của tôi là Windows XP. Các bài viết hứa hẹn những tiến bộ tuyệt vời dưới WinFX và DirectX 10 không hữu ích ở đây :-)
Cách tiếp cận tốt nhất ở đây là gì? Tôi không ngại giới thiệu một lớp C++/CLI nhỏ và tối ưu hóa việc xử lý ngữ cảnh thiết bị để ép ra hiệu suất cao hơn, nhưng tôi muốn một số lời khuyên dứt khoát về hướng đi nào.
EDIT: Cảm ơn bạn đã trả lời ban đầu. Tôi sẽ thử một sự kết hợp của nền bitmap rendering và gắn bó với các cuộc gọi tương đương GDI.
Ứng dụng mẫu trong liên kết blog là ứng dụng tôi đã thấy khi thấy sự khác biệt lớn giữa Vista và XP - trên máy tính Vista, GDI và GDI +, trong khi XP, tôi thấy sự khác biệt 6x mà tác giả đề cập. Đây có lẽ là một vấn đề trình điều khiển Vista, nhưng nêu bật một số khó khăn ở đây - cảm ơn! –
Lưu ý lịch sử: ExtTextOut từng là cách nhanh nhất để vẽ hình chữ nhật vững chắc trên một số thẻ/trình điều khiển :) –