wpf 添加动态图片

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了wpf 添加动态图片相关的知识,希望对你有一定的参考价值。

我想要显示一张gif的图片,这个图片有多个图层合成,有动态的效果

不知道该如何显示,,用什么控件好呢??

我直接将图片赋值给image,图片只会显示其中一个图层,不会动态的变化。。

先贴10,,如有帮忙解决问题,我会追加15分。。。

先谢过啦。。。

WPF很强大,但是当WPF的image控件遇到gif时就只读了图片的第一帧,很好很强大!

WPF不屑于gif的简单动画!

但是这对程序员来说不大爽啊!急得我眼泪都下来了!

幸好WPF里有MediaElement这个东西,它是对MediaPlyer的一个封装,果然很强大啊。不过另我不爽的是我这里有N个gif图片就要有N个MediaElement,要了亲命了。

还是不好,如果你能想到用WebBrowseControl来实现,或者用Frame来实现,恭喜你,你太有才了!

我还是不想这么去做,才分不够啊!

重写一下WPF的image,good idea!

public class GIFImageControl : System.Windows.Controls.Image

delegate void OnFrameChangedDelegate();
private Bitmap m_Bitmap;
public string Path get; set;
BitmapSource bitmapSource;

public void AnimatedImageControl(string path)

Path = path;
m_Bitmap = (Bitmap)Image.FromFile(path);
Width = m_Bitmap.Width;
Height = m_Bitmap.Height;
ImageAnimator.Animate(m_Bitmap, OnFrameChanged);
bitmapSource = GetBitmapSource();
Source = bitmapSource;



private void OnFrameChanged(object sender, EventArgs e)


Dispatcher.BeginInvoke(DispatcherPriority.Normal,
new OnFrameChangedDelegate(OnFrameChangedInMainThread));



private void OnFrameChangedInMainThread()

ImageAnimator.UpdateFrames();
if (bitmapSource != null)
bitmapSource.Freeze();
bitmapSource = GetBitmapSource();
Source = bitmapSource;
InvalidateVisual();


//private static bool loaded;
private BitmapSource GetBitmapSource()

IntPtr inptr = m_Bitmap.GetHbitmap();
bitmapSource = Imaging.CreateBitmapSourceFromHBitmap(
inptr, IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());
DeleteObject(inptr);
return bitmapSource;


[DllImport("gdi32")]
static extern int DeleteObject(IntPtr o);


ok,用window原有的东西去绑定到wpf上去。很好吧!是不是也比较有才呢?

来自: http://hi.baidu.com/mych/blog/item/1eb14f545f12a752564e00be.html
参考技术A 用函数来实现

C# WPF后台动态添加控件(经典)

概述 在Winform中从后台添加控件相对比较容易,但是在WPF中,我们知道界面是通过XAML编写的,如何把后台写好的控件动态添加到前台呢?本节举例介绍这个问题。 这里要用到UniformGrid布局,UniformGrid 是一种横向的网格分割、纵向的网格分割分别是均等的分割的布局类型. ​ 项目

以上是关于wpf 添加动态图片的主要内容,如果未能解决你的问题,请参考以下文章

ios开发 在cell中动态添加图片解决重复出现图层问题

求助RadioButton的动态添加

安卓中如何添加显示gif动态图片?

在WPF显示动态GIF图片

如何把视频片段做成动态图片

vue中怎么动态添加img的路径