『壹』 用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代码实现缩放图片,长方形图片变成正方形,上下保留空白区域.
那就把正方形的边长设置成长方形最长的变那么长
不就可以了吗