gpt4 book ai didi

java - display.async 和平滑过渡

转载 作者:行者123 更新时间:2023-12-02 00:09:13 29 4
gpt4 key购买 nike

我有一个自定义小部件,可以在悬停时更改背景。它工作得很好,但我希望在无背景和悬停背景之间实现平滑过渡。它可以与 GC.setAlpha() 一起使用,但是:

Display.getDefault().asyncExec(new Runnable() {
public void run() {
for (int i=0;i<255;i++) {
setBG(BGHelper(imgHover,i)); //i - alpha
try {
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});

此代码会等到 i == 255,但它不会显示平滑过渡。为什么?

最佳答案

这是行不通的,因为只要你在代码中,SWT 就不会重新绘制或改变组件。

您应该在单独的线程中完成这项工作,并为每次更改调用 Display.asyncExec

for (int i = 0; i < 255; i++) {
final int x = i;
Display.getDefault().asyncExec(new Runnable() {
public void run() {
setBG(BGHelper(imgHover,x)); //x - alpha
}
});
try {
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
}

关于java - display.async 和平滑过渡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13214110/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com