wpf 添加动态图片

我想要显示一张gif的图片,这个图片有多个图层合成,有动态的效果不知道该如何显示,,用什么控件好呢??我直接将图片赋值给image,图片只会显示其中一个图层,不会动态的变... 我想要显示一张gif的图片,这个图片有多个图层合成,有动态的效果

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

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

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

先谢过啦。。。
展开
 我来答
刘记小学生杂货铺
2010-12-29 · 超过35用户采纳过TA的回答
知道答主
回答量:62
采纳率:0%
帮助的人:86.5万
展开全部
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
微测检测5.10
2023-05-10 广告
您好!建议咨 深圳市微测检测有限公司,已建立起十余个专业实验室,企业通过微测检测就可以获得一站式的测试与认 证解决方案;(EMC、RF、MFi、BQB、QI、USB、安全、锂电池、快充、汽车电子EMC、汽车手机互 联、语音通话质量),认证遇... 点击进入详情页
本回答由微测检测5.10提供
百度网友30cc6ab
2010-12-21 · TA获得超过574个赞
知道小有建树答主
回答量:1336
采纳率:0%
帮助的人:848万
展开全部
用函数来实现
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式