大家好,不知道大家在用WPF 有没有遇到这样的问题,我发现WPF 没有支持动画GIF 的图片控件,没有像WinForm 那样 直接用PictureBox 装载GIF 图片就能动起来了。
在开发中遇到这样两个问题
1. 在WPF 中,如何在RichTextBox 中添加一个GIF 图片,动画的,就像QQ 的笑脸表情或者哭表情的图片,如果加载在RichTextBox 中并且可以是动画的
2.成功加载动画的GIF 图片到当前的RichTextBox 之后,把当前RichTextBox 的内容赋值给另外的一个RichTextBox 时,图片也是动画的
这个问题该怎么样解决呢,我该如何处理?
自己也扩展Image 写了一个加载GIF 的类,可以在导入Xaml 是报异常。
这是将当前RichTextBox 的内容加载到另外RichTextBox 的方法:
RichTextBox rtbb = sender as RichTextBox;
string s = rtbb.Tag.ToString();
System.IO.StringReader sr1 = new System.IO.StringReader(s);
System.Xml.XmlReader xr1 = System.Xml.XmlReader.Create(sr1);
FlowDocument ff = (FlowDocument)XamlReader.Load(xr1);
rtbb.Document = ff;
抛出的异常:
“在类型“System.Windows.Interop.InteropBitmap”上未找到匹配的构造函数。可以使用 Arguments 或 FactoryMethod 指令来构造此类型。”,行号为“1”,行位置为“1041”。
起初我也拓展Image用来显示gif动态图片,在richtextbox1中可以显示正常,导入richtextbox2时也遇到了导入XAML异常的现象,后来不直接使用拓展控件,而是在richtextbox1中创建button,在资源文件定义button的Template style,在样式中用拓展控件显示,这样导入到richtextbox就不会报错了
<Style x:Key="BQBtn" TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<my1:GifImage Source="{TemplateBinding Tag}" Width="{TemplateBinding Width}"
Height="{TemplateBinding Height}">
</my1:GifImage>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
程序中直接创建 new button(){style=BQBtn} 即可解决