我使用以下代码在Composite上绘制了一个图像
imageCanvas = new Composite(shell, SWT.BORDER);
//adding paintListener to the canvas
imageCanvas.addPaintListener(new PaintListener() {
@Override
public void paintControl(PaintEvent e)
{
if (sourceImage != null)
{
// draw the image
e.gc.drawImage(sourceImage, 120, 150);
//check the bounds of the image using the getBounds function
Rectangle newrec = sourceImage.getBounds();
System.out.println("X: " +newrec.x + " Y: "+newrec.y ); // prints (0, 0) instead of (120, 150)
}
}
});
现在,我正在尝试检索屏幕上的图像位置。 image.getBounds函数返回父容器中的边界,并且AWT / Swing中使用的getLocationOnScreen()不可用于SWT。如何在SWT中获取图像的屏幕位置?
答案 0 :(得分:2)
您需要显示相对坐标。如果您有一个复合imageCanvas
,并且您正在坐标 120,150 上绘制图像,那么您可以通过调用以下方式获取显示屏上的坐标:
imageCanvas.toDisplay(120, 150);