2016-04-07 24 views
0

Aşağıdaki kod, resim nesneleri boyamak için benim bileşemdir, ancak görüntüyü merkez etrafında hareket ettirerek döndürmek ancak aynı zamanda belirli bir değere göre çevirmek istiyorum. Bu döndürme dönüşümünden sonraki görüntü nasıl çevrilir?

  trans.translate(xShift, yShift); 

bu

Resmimi çevirmek kullanmaya çalıştı çizgi, ama nedense görüntünün her zaman parçasını keser.

protected void paintComponent(Graphics g) { 
      super.paintComponent(g); 
      if (myImage != null) { 
       AffineTransform trans = new AffineTransform(); 
       trans.translate(getWidth()/2, getHeight()/2); 
       trans.rotate(piece.getOrientation() * Math.PI/2); 
       trans.translate(-myImage.getWidth()/2, -myImage.getHeight()/2); 
       trans.translate(xShift, yShift); 
       Graphics2D g2d = (Graphics2D) g; 
       g2d.drawImage(myImage, trans, null); 
      } 
     } 

cevap

0

Amacım, java'nın, dönüştürme işlemleriyle ilgili bir sorunu vardır.

Başka bir yaklaşım bulabilirsiniz: ör. resmin kendisini dönüşümü, ardından basit bir çeviri geçerlidir: Belirli uzatmak çevirmek eğer bunun kesecek Tabii

BufferedImage b22=new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_INT_ARGB); 
    Graphics2D g2=(Graphics2D)b22.getGraphics(); 
    AffineTransform trans = new AffineTransform(); 
    trans.translate(getWidth()/2, getHeight()/2); 
    trans.rotate(Math.PI/2); 
    trans.translate(-bim.getWidth()/2, -bim.getHeight()/2); 
    g2.drawImage(bim, trans, null); 
    AffineTransform trans2 = new AffineTransform(); 
    trans2.translate(xoffset, yoffset); 
    Graphics2D g2d = (Graphics2D) g; 
    g2d.drawImage(b22, trans2, null); 
    // or just g2d.drawImage(b22, xoffset, yoffset, null); 

.

İlgili konular