2010-07-06 112 views
0

我正在繪製一個透明的渲染圖像,然後顯示在JPanel上的背景圖像上。drawRenderedImage(image,AffineTransform)。我如何獲得renderedImage的寬度和高度

我需要在縮放和旋轉後得到渲染圖像的邊界。 因此,下次我打電話重繪它可以與 渲染圖像的剪輯。

任何想法?謝謝你的幫助。

@Override public void paintComponent(java.awt.Graphics g) 
{ 
    if(g != null) 
    { 
     g.drawImage(backgroundImage, 0, 0, getWidth(), getHeight(), null); 
     Graphics2D g2 = (Graphics2D)g.create(); 
     double cx = sprite.getWidth()/2.0; 
     double cy = sprite.getHeight()/2.0; 
     AffineTransform at = AffineTransform.getTranslateInstance(xPos, yPos); 
     at.concatenate(AffineTransform.getScaleInstance(scale, scale)); 
     at.rotate(theta, cx, cy); 
     g2.drawRenderedImage(sprite, at); 

     //get width and height of rendered image here? 

     g2.dispose(); 
    } 

回答

0

喜歡的東西

Rectangle resizedBounds = at.createTransformedShape(sprite.getBounds()).getBounds(); 
+0

謝謝。這就是我一直在尋找的東西。唯一的問題是返回的Rectangle不是圖像的精確邊界。 – codealive 2010-07-07 17:33:46

+0

@codealive你能告訴,多少「不確切」? – Vanya 2010-07-08 07:28:51

+0

當旋轉時,矩形的大小約爲圖像每一邊的40個像素,但在被旋轉時精確到90 180 270或360 – codealive 2010-07-08 18:14:48

相關問題