У меня есть следующий код:
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() с регулярными интервалами времени. Изображения отображаются с определенными временными интервалами, но в любое время, когда я перемещаю окно над холстом или сводя к минимуму пользовательский интерфейс и увеличивая его снова, прослушиватель краски вызывается и рисует следующее изображение. Я не наблюдаю этого поведения на Linux/Mac OS, но только на окнах. Я не знаю, что случилось!
Cnvs определяется таким образом
cnvs = new Canvas(customContainer, SWT.NONE);
Я даже попытался использовать
cnvs = new Canvas(customContainer,SWT.DOUBLE_BUFFERED|SWT.NO_REDRAW_RESIZE);
но это не сработает!
Любая помощь будет оценена. благодаря
Ничего, все работает отлично.
"Классы, которые реализуют этот интерфейс, предоставляют методы, которые обрабатывают события, которые генерируются, когда элемент управления нужно нарисовать".
Если вы изменяете размер или перемещаете окно, может потребоваться перерисовать холст (например, когда окно становится настолько маленьким, что часть холста скрыта).
Поскольку SWT использует собственные компоненты, это может вести себя по-разному в разных ОС