开发一IM程序,在richtextbox控件中加入GIF图片后,虽然可以显示动画,但闪烁的比较厉害,双缓存也没有效果。图片是利用OLE对象的方式插入的。
部分代码如下:
private void richtextboxOnFrameChanged(object sender, EventArgs e)
{//每次帧切换,重新绘制RTF控件
this.richtextbox.Invalidate();
}
private void insertpic()//插入图片
{
....
if (ImageAnimator.CanAnimate(pic.Image))//是否包含帧结构
{
System.Drawing.ImageAnimator.Animate(pic.Image, new System.EventHandler(this.richtextboxOnFrameChanged));
....
}
}
请大家帮帮忙,谢谢!
部分代码如下:
private void richtextboxOnFrameChanged(object sender, EventArgs e)
{//每次帧切换,重新绘制RTF控件
this.richtextbox.Invalidate();
}
private void insertpic()//插入图片
{
....
if (ImageAnimator.CanAnimate(pic.Image))//是否包含帧结构
{
System.Drawing.ImageAnimator.Animate(pic.Image, new System.EventHandler(this.richtextboxOnFrameChanged));
....
}
}
请大家帮帮忙,谢谢!
if (RAL != null)
{
for (int i = 0; i < RAL.Count; i++)
{
this.richtextbox1.Invalidate();//逐一刷新每个动态图片
}
}
但这样做一方面是系统开销比较大,另外滚动条也有问题,就是当有图片处于RTF顶端的时候,向下拉滚动条时顶端的GIF图片要么全部显示,要么显示不出来,这应该是刷新时产生的问题,但处于滚动条下面的图片就没有问题,可以只显示出一部分,滚动条不发生跳跃。我对WINDOWS的窗口绘制机制不清楚,为什么同样是绘制图片,处于不用位置的图片绘制效果却不一样????请高手指点,谢谢大家!!!!