Как плавно прокрутить композицию SWT?
Я использую SWT ScrolledComposite, но когда я выполняю прокрутку в Windows, я получаю некоторое мерцание / мерцание, если я перехожу к быстрой. Что я могу сделать, чтобы удвоить буфер или уменьшить этот эффект, или что я могу сделать, чтобы переопределить функцию прокрутки по умолчанию и сделать ее более плавной? В области прокрутки есть текстовые поля, поэтому я не думаю, что холст сработает.
1 ответ
Хитрость заключается в том, чтобы играть с задержкой и использовать однопиксельную прокрутку.
Вот части кода, как я на самом деле это делаю:
public void scrollOnePixelUp() {
scrolledComposite.getContent().setLocation(0, scrolledComposite.getContent().getLocation().y - 1);
}
public void scrollOnePixelDown() {
scrolledComposite.getContent().setLocation(0, scrolledComposite.getContent().getLocation().y + 1);
}
private int pixelScrollDelay = 50;//ms
scrollingThread = new Thread() {
public void run() {
doScrolling = true;
int i = 0;
while((i < scrollLength) && running && doScrolling) {
i++;
if (d.isDisposed())
return;
d.asyncExec(new Runnable() {
public void run() {
if (scrollUp)
scrollOnePixelUp();
else
scrollOnePixelDown();
}
});
try {
sleep(pixelScrollDelay);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
doScrolling = false;
}
};
Надеюсь, это поможет!