Рисование динамических примитивов в Java SWT - PullRequest
0 голосов
/ 05 июля 2018

Я имею опыт работы с C ++ / Qt и сейчас изучаю программирование на Java и SWT GUI. Мне нужно нарисовать некоторые примитивные фигуры (круги, прямоугольники и т. Д.) На изображении. Формы должны перемещаться на изображении (т.е. изменять его положение по отношению к фону, представьте карту обновления в реальном времени). В Qt это легко сделать с помощью QGraphicsScene и QGraphicsItem s, но как этого добиться в SWT? Я пытался использовать Composite с Label, что близко к тому, что мне нужно, но я не нашел способа добавить примитивные формы в композит.

1 Ответ

0 голосов
/ 05 июля 2018

Элемент управления 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 рисования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...