wpf 添加动态图片
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了wpf 添加动态图片相关的知识,希望对你有一定的参考价值。
我想要显示一张gif的图片,这个图片有多个图层合成,有动态的效果
不知道该如何显示,,用什么控件好呢??
我直接将图片赋值给image,图片只会显示其中一个图层,不会动态的变化。。
先贴10,,如有帮忙解决问题,我会追加15分。。。
先谢过啦。。。
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 添加动态图片的主要内容,如果未能解决你的问题,请参考以下文章