2010-06-01 38 views
5

Tôi đang sử dụng một điều khiển hình ảnh để hiển thị văn bản:WPF Hình ảnh/Rendering Event

<Image x:Name="cImage" SnapsToDevicePixels="True" ... /> 

Bởi vì nó mất khoảng nửa giây để hiển thị hình ảnh trên màn hình đầu tiên tôi hiển thị một bản xem trước với:

RenderOptions.SetBitmapScalingMode(cImage, BitmapScalingMode.NearestNeighbor); 
cImage.Source=...; 

Sau đó, tôi đặt bộ hẹn giờ để thay đổi chế độ thành Chất lượng cao.

Có sự kiện WPF nào kích hoạt khi kết thúc hiển thị mà tôi có thể sử dụng thay vì hẹn giờ không?

Trả lời

1

Đó có phải là sự kiện được tải cho hình ảnh không?

Theo http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.loaded.aspx, Tải được khởi chạy khi nội dung được hiển thị và sẵn sàng cho tương tác.

Lưu ý rằng nếu bạn thay đổi nội dung của điều khiển hình ảnh sau khi được tải, sự kiện đã tải sẽ không được kích hoạt lại.

3

Bạn có thể thử sử dụng sự kiện nguồn gốc hình ảnh, nhưng tôi không phải lúc nào cũng có may mắn bằng cách sử dụng tính năng này.

giải pháp tốt hơn, tùy thuộc vào nguồn của bạn là thêm trình xử lý khi được tải.

bạn có thể thử một cái gì đó như thế này:

BitmapImage src = new BitmapImage(); 
src.BeginInit(); 
src.UriSource = tURI; 
src.EndInit(); 
imgImage.SetCurrentValue(Image.SourceProperty, src); 
src.DownloadCompleted += ImageDownloadCompleted; 

sau đó bạn có thể viết mã cho ImageDownloadCompleted để thay đổi độ phân giải.