2014-04-11 14 views
6

Các câu hỏi khác về địa chỉ SE cách tăng tốc độ điều chỉnh giao diện người dùng lồng nhau, nhưng - nếu không có bất kỳ điều khiển nào?Tại sao có độ trễ màu đen mỗi khi cửa sổ WPF được thay đổi kích thước?

Khi bạn kéo cạnh của cửa sổ WPF, ngay cả cửa sổ chính không có nội dung, thanh màu đen nhấp nháy nhanh trong khi kéo. Điều này tạo ra một feel- dể thương mà tôi không muốn gây ra cho khách hàng:

WPF window being resized

Nó được chậm hơn và nặng hơn với một giao diện người dùng đầy đủ trên đầu trang của nó là tốt. Điều này thậm chí không nhận được như thế nào xấu xí nó trông khi thay đổi kích thước bằng cách sử dụng các cạnh trên hoặc bên trái. Windows Forms - ngay cả với giao diện người dùng nặng nhất mà tôi đã xây dựng - không bao giờ trông như thế này ngay lập tức.

Điều gì có thể được thực hiện để làm cho hiệu suất thay đổi kích thước cửa sổ WPF so sánh với biểu mẫu giành chiến thắng?

(Tôi có Windows 7 x64 và một hệ thống màn hình ba trên một AT Radeon HD 7470.)

+0

Tôi không tin (nhưng tôi không chắc chắn) rằng có một sửa chữa thực sự cho điều này mà chúng tôi có thể thực hiện. Chỉ cần mở Microsoft Word/Excel/Outlook và thay đổi kích thước ứng dụng và bạn sẽ gặp phải những vấn đề tương tự mà bạn đang gặp phải. Có những cách để giúp giảm sự chú ý ([tìm thấy ở đây] (http://wieser-software.blogspot.co.uk/2012/06/wpf-window-rendering-woes.html)) nhưng nếu Microsoft có thể ' Tôi nhận được phần mềm riêng của họ xung quanh vấn đề sau đó tôi không nghĩ rằng chúng tôi sẽ có thể, một trong hai. –

+0

Word, Excel và Outlook thay đổi kích thước rất tốt trên hệ thống của tôi mà không có màu đen nào cả. Visual Studio và Blend, tuy nhiên, không. Các cửa sổ công cụ làm. – jnm2

+0

Tôi tự hỏi điều gì đang gây ra nó? – jnm2

Trả lời

3

Bạn có thể cập nhật card đồ họa của bạn và thử nó ra một lần nữa nhưng điều đó sẽ không thay đổi bất cứ điều gì. Lý do khá đơn giản. Chúng ta đều có thể thấy điều này đôi khi dựa trên tốc độ/làm chậm máy tính của chúng ta. Đôi khi nó chạy trơn tru bởi vì chúng tôi không có nhiều hình ảnh để vẽ. Lý do là không có màu nền thích hợp được tìm thấy trong card đồ họa tại thời điểm đó trong quá trình vẽ lại. Trình điều khiển của bạn là tốt, và nó không chỉ vì bạn sử dụng Wpf. Các kỹ thuật khác sử dụng cùng một cơ chế đằng sau vẽ lại.

Điều đầu tiên WPF sẽ làm là xóa vùng bẩn sẽ vẽ lại. Mục đích của các vùng bẩn là giảm lượng pixel được gửi đến giai đoạn sáp nhập đầu ra của đường ống GPU. Đây là nơi chúng ta thấy màu đen. Cửa sổ chính nó tại thời điểm đó không có màu nền hoặc màu nền của nó được đặt thành trong suốt và do đó đối với chúng tôi, GPU vẽ nền đen. Những điều chạy async trong wpf đó là tốt như vậy.

Để khắc phục điều này, bạn có thể đặt màu sửa như "Trắng" thành Cửa sổ. Sau đó hệ thống WPF sẽ dọn dẹp vùng bẩn nhưng tự động điền nó với màu trắng thay vì màu đen. Điều này thường hữu ích.

Khớp màu cửa sổ hoặc màu của lớp nhiều nhất trên cùng. Đừng để GPU sử dụng màu đen và bạn nên làm tốt. Btw Wpf nhanh hơn WinForm nên đừng lo lắng.

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