我不想太具体,因为这可能有很多应用程序,但如果需要,我可以发布一些代码。为简单起见,我们假设RCP
视图中有Canvas
,我想在中心的canvas
上绘制一个圆圈。不是每次重新抽奖,我都希望它从中心开始。
我尝试在扩展canvas
的构造函数中执行此操作,但getSize()
方法尚未返回正确的大小。我尝试了pack()
和layout()
View的父组合,然后获得canvas
大小,仍然没有。
那么有什么地方可以捕获视图和正在设置的组件的初始大小吗?
答案 0 :(得分:0)
收听SWT.Resize
事件。创建控件时,您将获得调整大小。
答案 1 :(得分:0)
我不确定你的意思"不是每次重绘,"但通常情况下,要绘制项目(并让它们继续绘制,你必须实际上#34;绘制"在一个控件的PaintListener的paintControl()方法中。这可能就是你的样子寻找:
canvas.addPaintListener(new PaintListener() {
@Override
public void paintControl (PaintEvent event) {
Rectangle clientRect = canvas.getClientArea();
event.gc.drawOval(0, 0, clientRect.width - 1, clientRect.height - 1);
});
所以你可以得到"尺寸"通过控件(画布的)客户区,然后进行相应的绘制。您需要更改drawOval方法中的参数,以使您的圆圈具有合适的大小。
那是如何"画"并保持绘图。否则,它会消失。