gpt4 book ai didi

java - SWT Canvas PaintListener() 被错误调用

转载 作者:行者123 更新时间:2023-11-30 03:53:38 24 4
gpt4 key购买 nike

我有以下代码:

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() 定期调用的一系列图像。图像按指定的时间间隔显示,但每当我在 Canvas 上移动窗口或最小化 UI 并再次最大化它时,都会调用绘制监听器并绘制下一个图像。我在 Linux/Mac OS 上没有观察到这种行为,而只在 Windows 上观察到。我不知道出了什么问题!

cnvs 是这样定义的

 cnvs = new Canvas(customContainer, SWT.NONE);

我什至尝试过使用

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

但它不起作用!

任何帮助将不胜感激。谢谢

最佳答案

没什么,一切都很好。

"Classes which implement this interface provide methods that deal with the events that are generated when the control needs to be painted."

来自 JavaDoc (http://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fapi%2Forg%2Feclipse%2Fswt%2Fevents%2FPaintListener.html)。

如果调整窗口大小或移动窗口,可能需要重新绘制 Canvas (例如,当窗口变得太小以致于 Canvas 的一部分被隐藏时)。

由于 SWT 使用 native 组件,因此在不同操作系统上的行为可能有所不同

关于java - SWT Canvas PaintListener() 被错误调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23800068/

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