最近项目来了新需求,要求在原先的图形监控上显示动态的图片,原先的控件是paintbox,就是要在一个大的paintbox上的指定区域显示一张gif图片原先在paintbox上显示静态图片代码如下
  JPeg := TJPegImage.Create;
  JPeg.LoadFromFile('test.jpg');
  PaintBox1.Canvas.StretchDraw(Rect(50, 50, 100, 100), JPeg);
把jpeg图片换成gif的就不能动了,我试了下用image控件可以显示gif动态图片,代码如下
  Image1.Picture.LoadFromFile('test.gif');
  Image1.Stretch := True;
  TGIFImage(Image1.Picture.Graphic).AnimationSpeed := 150;
  TGIFImage(Image1.Picture.Graphic).Animate := True;
但不可能把原有paintbox控件换成image控件,这样代价太大,也会新生出许多问题,paintbox控件找了下没找到与Graphic相关的属性求各位大侠指教,帮忙想想办法,感激不尽!

解决方案 »

  1.   

    1.调整下image的位置,让他覆盖在paintbox上面可以吗?
    2.把gif图片解析出来,用timer一张一张的画在paintbox上,实现动画~
      

  2.   

    谢谢dropme为我考虑的,gif图片在项目中表示一种设备实物,可以有许多的设备实物,如果用image覆盖到paintbox上面或用timer控制图片一张一张的切换,就要许多许多的image和timer,相当的繁琐,image和timer都需要动态生成和销毁,代价有点大...
      

  3.   

    如果二分之一你需要组成(0空格1/2)形式,如果一又二分之一你需要组成(1空格1/2)形式再写入excel
      

  4.   

    不好意思发错,你这个个人觉得还是考虑换成image了,paintbox毕竟不是专用在图片显示上
      

  5.   

    换成Image解决问题吧,以后可能还会进行其他的功能需求,这样改了后你以后再处理起来也方便。
      

  6.   

    http://blog.csdn.net/maozefa/archive/2007/07/06/1680948.aspx
    看看这个吧,
      

  7.   

    有GIF组件,可以直接放在Panel实现动画。