попасть в центр композита?затмение - PullRequest
0 голосов
/ 19 августа 2011

Моя цель - нарисовать в ЦЕНТРЕ композита.На самом деле, у меня есть вид rcp, и я рисую некоторые формы внутри него.это код, который я использую:

display = parent.getDisplay();
white= display.getSystemColor(SWT.COLOR_WHITE);
parent.setLayout(new FillLayout(SWT.VERTICAL));

// Create the ScrolledComposite to scroll horizontally and vertically
final ScrolledComposite sc =new ScrolledComposite(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
sc.setExpandHorizontal(true);
sc.setExpandVertical(true);
sc.setMinHeight(100);
sc.setMinWidth(100);
sc.setSize(100,100);
Composite child = new Composite(sc,SWT.NONE);   
child.setLayout(new FillLayout());
child.layout(true);

parent.addListener (SWT.Resize,  new Listener () {
    public void handleEvent (Event e) {
        x = child.getBounds().width/2;
        y = child.getBounds().height/2;
        child.addPaintListener(new PaintListener() {
        public void paintControl(PaintEvent event) {
        dessin(gc); // to raw the circle
    }
    });
sc.getDisplay().update(); 
    }
});

Я определил представление с отношением (поэтому, когда представление пусто, я получаю нужный размер) ... Я не знаю точный размервид, поскольку он может быть изменен пользователем в любой момент или когда редактор открыт ... Итак, моя проблема заключается в том, как рисовать только в центре вида и сохранять рисунки в центре, даже если вид был изменен... PS: Используя (Point.x и point.y), я получаю (0,0), когда представление появляется первым, затем я получаю другие значения ... Справка Pleaaaaaaaaaaaaaase

enter image description here enter image description hereenter image description here

1 Ответ

1 голос
/ 19 августа 2011

Вы можете использовать метод getOrigin() для ScrolledComposite, который будет возвращать экземпляр Point с точкой в ​​содержимом, которая в данный момент отображается в верхнем левом углу прокрутки.См. Документ метод getOrigin для ScrolledComposite .

С помощью этой информации и размера компонента, который вы получите методом getBounds(), вы можете легко вычислить «реальный» центр.

...