我正在尝试为使用WindowBuilder / SWT Designer创建的GUI实现拖放功能。目前,为了确定画布在画布上的确切位置,我使用
canvas.addPaintListener(new PaintListener() {
public void paintControl(PaintEvent e) {
int x = event.x - shell.getBounds().x - canvas.getBounds().x;
int y = event.y - shell.getBounds().y - canvas.getBounds().y;
e.gc.drawString(d, x, y);
}
});
但这不是鼠标下降的精确定位,而是向右侧进一步。我怎样才能解决这个问题?感谢。
答案 0 :(得分:0)
您需要的只是非常有用的功能Control#toControl(int, int)
:
返回一个点,该点是将参数(在显示相对坐标中指定)转换为相对于接收器的坐标的结果。
canvas.addPaintListener(new PaintListener()
{
public void paintControl(PaintEvent e)
{
Point point = canvas.toControl(event.x, event.y);
e.gc.drawString(d, point.x, point.y);
}
});
那就行了。