进入复合材料的中心?日食

时间:2011-08-19 10:29:51

标签: eclipse swt composite

我的目的是绘制复合材料的中心。实际上,我有一个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 here enter image description here

1 个答案:

答案 0 :(得分:1)

您可以在getOrigin()上使用ScrolledComposite方法,该方法将返回Point个实例,其中包含当前显示在滚动合成的左上角的内容中的点。请参阅文档getOrigin method on ScrolledComposite

使用getBounds()方法获得的组件信息和大小,您可以轻松计算“真实”中心。