SWT - 获取图像的实际屏幕位置

时间:2012-02-29 23:52:25

标签: java swing swt awt

我使用以下代码在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中获取图像的屏幕位置?

1 个答案:

答案 0 :(得分:2)

您需要显示相对坐标。如果您有一个复合imageCanvas,并且您正在坐标 120,150 上绘制图像,那么您可以通过调用以下方式获取显示屏上的坐标:

imageCanvas.toDisplay(120, 150);