2012-02-29 65 views
1

的實際屏幕位置我一直在使用下面的代碼SWT - 得到的圖像

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

檢查此http://計算器。 com/questions/339821/find-composite-location-on-screen和http://www.ibm.com/developerworks/java/tutorials/j-swing2swt/section4.html。如果您將swing和swt API聯繫在一起,那麼IBM鏈接很好 – Favonius 2012-03-01 06:10:47

回答

2

您需要顯示相對座標。如果你有一個複合imageCanvas,和你在座標120,150在其上繪製圖像,那麼你可以通過調用獲得顯示器上的座標:

imageCanvas.toDisplay(120, 150);