在Java SWT中绘制动态图元

时间:2018-07-05 20:09:55

标签: java swt

我有C ++ / Qt背景,现在正在学习Java和SWT GUI编程。我需要在图像上绘制一些原始形状(圆形,矩形等)。形状需要在图像上移动(即,更改其相对于背景的位置,想象一个实时更新的地图)。在Qt中,可以使用QGraphicsSceneQGraphicsItem轻松完成此操作,但是如何在SWT中实现呢?我尝试将CompositeLabel结合使用,这与我的需求很接近,但是我还没有找到将原始形状添加到Composite的方法。

1 个答案:

答案 0 :(得分:1)

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。