मैं AffineTransform का उपयोग कर अपने केंद्र से एक आयताकार स्केल करने की कोशिश कर रहा हूं। मुझे यकीन है कि समाधान स्पष्ट है लेकिन मैं इसे काम नहीं कर सकता! यहां मैंने अभी तक परीक्षण किया है ...AffineTransform: अपने केंद्र से एक आकार स्केलिंग
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.geom.AffineTransform;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class Test extends JPanel {
Test()
{
super(null);
setOpaque(true);
setBackground(Color.WHITE);
setPreferredSize(new Dimension(200,200));
}
@Override
protected void paintComponent(Graphics g1) {
super.paintComponent(g1);
Rectangle r= new Rectangle(5,5,getWidth()-10,getHeight()-10);
double cx= r.getCenterX();
double cy= r.getCenterY();
Graphics2D g=(Graphics2D)g1;
g.setColor(Color.BLACK);
AffineTransform old= g.getTransform();
for(double zoom=0.9; zoom>=0.5; zoom-=0.1)
{
AffineTransform tr2= new AffineTransform(old);
tr2.translate(-cx, -cy);
tr2.scale(zoom, zoom);
tr2.translate(cx/zoom,cy/zoom);
g.setTransform(tr2);
g.draw(r);
g.setTransform(old);
}
}
public static void main(String[] args) {
JOptionPane.showMessageDialog(null, new Test());
}
}
लेकिन यह काम नहीं करता .... कोई सुझाव?
मैं तुम्हें गाढ़ा/आंतरिक आयतों को ट्रैक करने की कोशिश कर रहे मान? – basszero