2011-01-17 26 views
8

Tôi có một câu hỏi về bộ nhớ đệm bitmap trong các ứng dụng Windows Phone 7 Silverlight.BitmapCache? Khi nào và cách sử dụng?

Khi nào tôi nên sử dụng? Và trên những gì kiểm soát? Tôi có nên bitmap cache trẻ em của một controll thats bitmap cache? Tôi không chắc nó hoạt động như thế nào và sẽ tốt hơn nếu bạn nhận được lời khuyên từ các bạn.

/Richard

Trả lời

6

tôi thấy this link giải thích CacheMode trong Silverlight 3. Từ liên kết: [. Liên kết này là chết]

  • BitmapCache là chỉ chế độ bộ nhớ cache được hỗ trợ.
  • Caching được áp dụng cho phần tử và tất cả các phần tử con của nó.
  • BitmapCaching nên được sử dụng trong các tình huống mà bạn đang pha trộn, chuyển đổi (dịch, kéo dài, xoay).
  • Việc lạm dụng tính năng CacheMode có thể làm giảm hiệu suất, vì vậy bạn cần thực sự nghĩ qua những gì bạn đang làm. Nếu cây thị giác của bạn xen kẽ các yếu tố được lưu trong bộ nhớ cache và không được lưu trong bộ nhớ cache, bạn có hiệu quả gây ra nhiều bề mặt hiển thị để tạo ra hậu trường. Các bề mặt chưa được lưu trữ được hiển thị trong phần mềm và các bề mặt được lưu trong bộ nhớ cache được hiển thị bằng phần cứng. Hiệu suất của bạn sẽ tốt nhất nếu bạn có thể giảm thiểu tổng số bề mặt hiển thị và làm cho phần cứng hoạt động ở nơi có thể.
  • Bạn có thể xác định yếu tố nào đang được lưu trong bộ nhớ cache bằng cách thêm tham số EnableCacheVisualization vào khai báo plugin Silverlight của bạn. <param name="EnableCacheVisualization" value="true" />
  • Theo như tôi có thể biết, khả năng tăng tốc GPU không xảy ra trên máy Mac khi ứng dụng Silverlight không ở chế độ toàn màn hình. Đây rõ ràng là một hạn chế của mô hình trình cắm thêm Safari.

Tôi tự hỏi nếu EnableCacheVisualization có thể được kích hoạt cho WP7, Tôi đang sử dụng BitmapCache cho một LongListPickerContentPresenter (mà tôi cư với nội dung tự động tạo ra) và nó sẽ được thú vị để biết nếu bộ nhớ đệm đang làm việc . Nhưng theo viên đạn thứ 3, bạn nên sử dụng nó chỉ khi bạn đang hoạt hình UIElement s, mà tôi không, vì vậy có lẽ tôi không nên sử dụng nó ở tất cả!

1

Từ những gì tôi đã nhìn thấy/đọc, bạn muốn sử dụng bộ nhớ đệm bitmap trên các đối tượng đó có thể là tốn kém để render (như rất nhiều trẻ em hoặc bố trí phức tạp) nếu bạn đang sử dụng chúng trong chuyển tiếp hoặc hoạt ảnh.

Với bộ nhớ đệm bitmap, phần cứng có thể thực hiện chuyển tiếp + hoạt ảnh nhanh hơn/mượt mà hơn.

I nghĩ bạn chỉ cần đặt nó vào mặt hàng đầu tiên nhất/mục cha nơi bạn áp dụng biến đổi hoặc hoạt ảnh? Có người sẽ cùng một thời gian ngắn để sửa chữa cho tôi, tôi chắc chắn :)

4

BitmapCache nên, đối với phần lớn các đối tượng, là thứ bạn không cần phải suy nghĩ về Windows Phone 7. Silverlight cho WP7 thực hiện tự động bitmap caching của các phần tử hoạt ảnh theo cách giúp bộ nhớ đệm (dịch, độ mờ , xoay - có thể nhiều hơn, tôi không thể nhớ lại bây giờ).

Silverlight trên máy tính để bàn (hoặc Mac) hiện không hoàn toàn thông minh, vì vậy bạn cần phải chỉ định CacheMode = BitmapCache theo cách thủ công trên các đối tượng bằng cách sử dụng xấp xỉ hướng dẫn được chỉ bởi Praetorian trong câu trả lời của mình.

Có thể có các trường hợp cạnh mà việc đặt BitmapCache rõ ràng là hữu ích ngay cả trên Windows Phone, nhưng tôi không biết về chúng một cách dễ dàng. Bạn có thể thử xem Windows Phone Performance Tips on MSDN.

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