我的目的是绘制复合材料的中心。实际上,我有一个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帮助
答案 0 :(得分:1)
您可以在getOrigin()
上使用ScrolledComposite
方法,该方法将返回Point
个实例,其中包含当前显示在滚动合成的左上角的内容中的点。请参阅文档getOrigin method on ScrolledComposite。
使用getBounds()
方法获得的组件信息和大小,您可以轻松计算“真实”中心。