SWT Canvas中的重绘问题

时间:2014-04-30 02:09:33

标签: java canvas swt refresh

我使用 TimerTask SWT Canvas 中显示一系列图像,每5秒重绘一次画布。这一切都很好但是当我在画布区域上移动一些窗口时,它会在它按顺序移动到下一个图像之前开始变得混乱。我可以避免这个吗?

这是画布

  

cnvs = new Canvas(customContainer,SWT.NO_REDRAW_RESIZE |   SWT.DOUBLE_BUFFERED);

我正在以这种方式在绘图侦听器中绘制图像

  

int index = 0;                         如果(curImg> = 0&安培;&安培; curImg< 3)                            curImg ++;                        其他                            curImg = 0;

                  Image img = imgs[curImg];

                  if(curImg==3){
                      index=curImg-1;
                      img=imgs[index];
                  }
e.gc.drawImage(img,
               0,
               0,
               img.getImageData().width,
               img.getImageData().height,
               0,
               0,
               cnvs.getSize().x,
               cnvs.getSize().y);

TimerTask功能:

public TimerTask startTask() {
        return new TimerTask() {

            @Override
            public void run() {
                // TODO Auto-generated method stub

                if(!UIManager.getShell().getDisplay().isDisposed()){
                UIManager.getShell().getDisplay().asyncExec(new Runnable() {

                    @Override
                    public void run() {

                        if(!cnvs.isDisposed())
                        cnvs.redraw();

                    }
                });
            }
            }
        };
    };

这就是它被调用的方式

  

计时器=新   计时器(); timer.schedule(MainUI.compositeInstallationProgresslatest.startTask(),1000,5000);

感谢您的帮助!

0 个答案:

没有答案