show .gif animation; solve a memory leak caused by background UI thread

This commit is contained in:
Paddy Xu
2017-05-01 13:30:43 +03:00
parent bb8e4b03c8
commit 71f02c88b3
8 changed files with 47 additions and 21 deletions

View File

@@ -5,6 +5,7 @@ using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using XamlAnimatedGif;
namespace QuickLook.Plugin.ImageViewer
{
@@ -21,6 +22,18 @@ namespace QuickLook.Plugin.ImageViewer
{
InitializeComponent();
LoadImage(path);
Loaded += (sender, e) => { ZoomToFit(); };
viewPanel.PreviewMouseWheel += ViewPanel_PreviewMouseWheel;
viewPanel.PreviewMouseLeftButtonDown += ViewPanel_PreviewMouseLeftButtonDown;
viewPanel.PreviewMouseMove += ViewPanel_PreviewMouseMove;
}
private void LoadImage(string path)
{
var ori = ImageFileHelper.GetOrientationFromExif(path);
var bitmap = new BitmapImage();
@@ -36,14 +49,11 @@ namespace QuickLook.Plugin.ImageViewer
: Rotation.Rotate0;
bitmap.EndInit();
}
viewPanelImage.Source = bitmap;
Loaded += (sender, e) => { ZoomToFit(); };
viewPanel.PreviewMouseWheel += ViewPanel_PreviewMouseWheel;
viewPanel.PreviewMouseLeftButtonDown += ViewPanel_PreviewMouseLeftButtonDown;
viewPanel.PreviewMouseMove += ViewPanel_PreviewMouseMove;
if (Path.GetExtension(path).ToLower() == ".gif")
AnimationBehavior.SetSourceUri(viewPanelImage, new Uri(path));
}
private void ViewPanel_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)

View File

@@ -44,8 +44,8 @@
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
<Reference Include="WindowsBase" />
<Reference Include="WpfAnimatedGif, Version=1.4.14.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\..\packages\WpfAnimatedGif.1.4.14\lib\net\WpfAnimatedGif.dll</HintPath>
<Reference Include="XamlAnimatedGif, Version=1.1.9.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\..\packages\XamlAnimatedGif.1.1.9\lib\net45\XamlAnimatedGif.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="WpfAnimatedGif" version="1.4.14" targetFramework="net452" />
<package id="XamlAnimatedGif" version="1.1.9" targetFramework="net452" />
</packages>