我有以下代码:
cnvs.addPaintListener(new PaintListener() {
public void paintControl(PaintEvent e) {
e.gc.drawImage(img, 0, 0, img.getImageData().width,
img.getImageData().height, 0, 0,
cnvs.getSize().x, cnvs.getSize().y);
if (curImg >= 0 && curImg < IMG_COUNT - 1) curImg++;
else curImg=0;
}
});
我显示由cnvs.redraw()以固定时间间隔调用的图像序列。图像以指定的时间间隔显示,但无论何时我在画布上移动窗口或最小化UI并再次最大化它,都会调用绘图侦听器并绘制下一个图像。我在Linux / Mac OS上没有观察到这种行为,但仅限于Windows。我不知道什么是错的!
cnvs以这种方式定义
cnvs = new Canvas(customContainer, SWT.NONE);
我甚至尝试过使用
cnvs = new Canvas(customContainer,SWT.DOUBLE_BUFFERED|SWT.NO_REDRAW_RESIZE);
但它不起作用!
任何帮助将不胜感激。 感谢
答案 0 :(得分:2)
没什么,一切正常。
&#34;实现此接口的类提供了处理的方法 需要绘制控件时生成的事件。&#34;
如果您调整窗口大小或移动窗口,可能需要重绘画布(例如,当窗口变得太小以至于隐藏了画布的一部分时)。
由于SWT使用本机组件,因此在不同的操作系统上可能会有所不同