『壹』 用java語言寫一個二維平面圖形(如長方形)的平移,旋轉,縮放的程序.
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.ActionEvent;
importjava.awt.geom.*;
/**
*@
*/
{
=newDimension(300,200);
=newDimension(1024,768);
=newDimension(600,400);
publicDimensiongetMaximumSize(){returnmaxSize;}
publicDimensiongetMinimumSize(){returnminSize;}
(){returnpreferredSize;}
publicStringgetTitle(){return"FrameTitle";}
privateAffineTransformaf=newAffineTransform();
privateStrokestroke=newBasicStroke(2.0f);
privateRectanglerct=newRectangle(40,140,200,140);
privateJComponentcanvas=newJComponent(){
protectedvoidpaintComponent(Graphicsg){
super.paintComponent(g);
g.setColor(Color.BLACK);
g.fillRect(0,0,getWidth(),getHeight());
Graphics2Dg2d=(Graphics2D)g.create();
g2d.setColor(Color.YELLOW);
g2d.setTransform(af);
g2d.setStroke(stroke);
g2d.draw(rct);
g2d.dispose();
}
};
RectTransform()throwsHeadlessException{
init();
doLay();
attachListeners();
}
privatevoidinit(){
}
privatevoiddoLay(){
Containercontainer=getContentPane();
JPanelpanel=newJPanel(newFlowLayout(FlowLayout.CENTER,30,5));
panel.add(newJButton(newAfAction("move",AffineTransform.getTranslateInstance(100,100))));
panel.add(newJButton(newAfAction("rotate",AffineTransform.getRotateInstance(Math.PI/3,40,120))));
panel.add(newJButton(newAfAction("zoomIn",AffineTransform.getScaleInstance(2,2))));
panel.add(newJButton(newAfAction("ZoomOut",AffineTransform.getScaleInstance(.5d,.5d))));
panel.add(newJButton(newAfAction("Original",newAffineTransform())));
container.add(panel,BorderLayout.NORTH);
container.add(canvas,BorderLayout.CENTER);
pack();
}
privatevoidattachListeners(){
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
{
privateAffineTransformaff;
privateAfAction(Stringn,AffineTransformaf){
super(n);
this.aff=af;
}
publicvoidactionPerformed(ActionEvente){
af.setTransform(aff);
if(canvas.isVisible())canvas.paintImmediately(0,0,getWidth(),getHeight());
}
}
publicstaticvoidmain(String[]args){
newRectTransform().setVisible(true);
}
}
『貳』 java代碼實現縮放圖片,長方形圖片變成正方形,上下保留空白區域.
那就把正方形的邊長設置成長方形最長的變那麼長
不就可以了嗎