在 Java SWT 中绘制动态原语
Drawing dynamic primitives in Java SWT
我有 C++/Qt 背景,现在正在学习 Java 和 SWT GUI 编程。我需要在图像上绘制一些原始形状(圆形、矩形等)。形状需要在图像上移动(即改变其相对于背景的位置,想象一个实时更新的地图)。在 Qt 中,这可以通过使用 QGraphicsScene
和 QGraphicsItem
s 轻松完成,但是如何在 SWT 中实现呢?我尝试将 Composite
与 Label
结合使用,这接近我的需要,但我还没有找到一种方法来将原始形状添加到复合材料中。
Canvas
控件是专门用来绘图的。基本绘图操作在GC
class.
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);
}
});
调用Canvasredraw
方法请求重绘控件。这将再次调用绘画侦听器。
Eclipse GEF 等其他 Eclipse 包提供了更复杂的绘图 API。
我有 C++/Qt 背景,现在正在学习 Java 和 SWT GUI 编程。我需要在图像上绘制一些原始形状(圆形、矩形等)。形状需要在图像上移动(即改变其相对于背景的位置,想象一个实时更新的地图)。在 Qt 中,这可以通过使用 QGraphicsScene
和 QGraphicsItem
s 轻松完成,但是如何在 SWT 中实现呢?我尝试将 Composite
与 Label
结合使用,这接近我的需要,但我还没有找到一种方法来将原始形状添加到复合材料中。
Canvas
控件是专门用来绘图的。基本绘图操作在GC
class.
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);
}
});
调用Canvasredraw
方法请求重绘控件。这将再次调用绘画侦听器。
Eclipse GEF 等其他 Eclipse 包提供了更复杂的绘图 API。