java - 在 Java SWT 中绘制动态基元

标签 java swt

我有 C++/Qt 背景,现在正在学习 Java 和 SWT GUI 编程。我需要在图像上绘制一些原始形状(圆形、矩形等)。形状需要在图像上移动(即改变其相对于背景的位置,想象一下实时更新的 map )。在 Qt 中,这可以通过使用 QGraphicsScene 和 QGraphicsItem 轻松完成,但如何在 SWT 中实现这一点?我尝试将 CompositeLabel 结合使用,这接近我所需要的,但我还没有找到向 Composite 添加原始形状的方法。

最佳答案

Canvas 控件专门用于绘图。基本绘图操作位于 GC 类中。

Canvas drawWidget = new Canvas(composite, SWT.NONE);
drawWidget.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));

drawWidget.addPaintListener(new PaintListener() {
    @Override
    public void paintControl(final PaintEvent e) {
        Rectangle r = drawWidget.getClientArea();
        e.gc.drawOval(0, 0, r.width - 1, r.height - 1);
    }
});

调用 Canvas redraw 方法来请求重绘控件。这将再次调用绘制监听器。

其他 Eclipse 包(例如 Eclipse GEF)提供了更复杂的绘图 API。

关于java - 在 Java SWT 中绘制动态基元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51199131/

相关文章:

java - 如何通过用户输入向sqlite插入数据?

Java平均误差

linux - 设置 Window tester pro linux。 SWT错误

winapi - 如何在本地运行SWT Win32扩展示例程序?

java - Java GUI 中的 YouTube 播放器

java - 如何更改字符串的格式/模式?

java - 有没有办法在 Java 中显式指定构造函数?

java - 安全递增整数的方法有哪些?

java - 如何在 SWT 中绘制 Composite 的子元素?

java - SWT 按钮网格