2013-01-06 32 views
5

Tôi cần hiển thị GIF động trong ứng dụng tàu điện ngầm của mình, nhưng tôi không thể tìm thấy bất kỳ điều khiển nào cho phép nó. (Tôi đã thử Image, MediaElementMediaPlayer từ Khung trình phát)WinRT - Hiển thị GIF động trong điều khiển

Có thể nào đó để hiển thị GIF động không?

Trả lời

3

Trong khi tôi chưa kiểm tra nếu nó hoạt động và nó có thể không hoạt động cho bạn do các vấn đề về không phận - bạn có thể thử lưu trữ gif của bạn trong một điều khiển WebView. Nó có thể dễ dàng hơn nhiều so với các giải pháp khác tốt hơn được đề xuất bởi Norbert và Carl.

+0

Điều đó làm việc :) Đầu tiên tôi phát hiện kích thước của gif và sau đó đặt chiều cao và chiều rộng của webviews thành 20 để tránh các thanh cuộn. Sau đó, chỉ cần đặt nguồn của webview thành gif và nó hoạt động :) – Jesse

+0

Cân nhắc chuyển sang WebViewBrush. Điều đó sẽ cung cấp cho bạn hiệu suất tốt hơn –

4

Bạn có thể đạt được điều này bằng cách sử dụng lớp BitmapDecoder trong Khuôn khổ .NET. Tôi có một ví dụ trên blog của tôi, cho thấy làm thế nào để thực hiện một AnimationControl có thể hiển thị GIF động từ một tập tin gif nguồn ress. Kiểm tra: http://www.henrikbrinch.dk/Blog/2013/02/21/Windows-8---GIF-animations--the-RIGHT-way

+0

tuyệt vời ... !!! –

3

Tôi vừa phát hành thư viện để phát GIF động: XamlAnimatedGif. Bạn chỉ cần thiết lập một tài sản gắn liền trên một tiêu chuẩn Image kiểm soát:

<Image gif:AnimationBehavior.SourceUri="/Images/animated.gif" /> 

(ánh xạ xmlns là xmlns:gif="using:XamlAnimatedGif")

Trong các tác phẩm trên WPF, Windows 8.1 và Windows Phone 8.1

0

Như @Filip Skakun cho biết phương thức WebView hoạt động. Chắc chắn đó là "hack" nhưng tất cả các thư viện và giải mã trên bay chậm, hoạt hình flickers (ít nhất là trong cửa sổ điện thoại). Sử dụng WebView cung cấp cho bạn khả năng lưu trữ các hình động với nền trong suốt. Để sử dụng WebView gif phương pháp vẽ tạo trang html trong dự án của bạn:

<!DOCTYPE html> 
<html lang="en" xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta charset="utf-8" /> 
    <title>gif rendering</title> 
    <script type="text/javascript"> 
     function SetImageSource(image, source) { 
      document.getElementById(image).src = source; 
     }; 
    </script> 

<style type="text/css"> 
    html, body 
    { 
     -ms-content-zooming:none; 
     -ms-overflow-style: none; 
     -ms-scroll-translation: none; 
     -ms-touch-select: none; 
     overflow: hidden; 
     zoom: 100%; 
    } 
</style> 
</head> 
<body> 
<img id="gifPlaceholder" src=""/> 

<script> 
    SetImageSource("gifPlaceholder", window.top.location.search.substring(1)); 
</script> 
</body> 
</html> 

CSS là rất quan trọng - bởi vì nó vô hiệu hóa zoom/di chuyển/cảm ứng di chuyển của WebView (mà không phải là mong muốn trong hầu hết các trường hợp). Thêm gifs động vào cùng một thư mục (nơi html ngồi). mã XAML:

<WebView Name="gifRendererWebView" 
     Source="ms-appx-web:///pathToHtmlInProject.html?gifName.gif" 
     DefaultBackgroundColor="Transparent"/> 

Hạn chế duy nhất là bạn "mất những cử chỉ" trên khu vực mà WebView chiếm (và bạn không thể sử dụng WebViewBrush bởi vì bạn sẽ mất hình ảnh động).

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