import java.awt.*;
import java.awt.Shape; //不加这句的结果...
import java.awt.event.*;
import java.awt.geom.*;
import javax.swing.*;
import java.util.*;
import java.awt.image.BufferedImage;
public class Graphics2DDemo extends JFrame
{
public Graphics2DDemo()
{
this.getContentPane().add(new MyPanel());
setTitle("Graphics2D绘图方法演示");
setSize(380,260);
setVisible(true);
}
public static void main(String args[])
{
JFrame.setDefaultLookAndFeelDecorated(true);
Font fonts=new Font("JFrame",Font.PLAIN,14);
Enumeration keys=UIManager.getLookAndFeelDefaults().keys();
while(keys.hasMoreElements())
{
Object keyss=keys.nextElement();
if(UIManager.get(keyss) instanceof Font)
UIManager.put(keyss,fonts);
}
Graphics2DDemo mainFrame=new Graphics2DDemo();
}
}
class MyPanel extends JPanel
{
MyPanel()
{
setBackground(Color.WHITE);
setOpaque(true);
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2d=(Graphics2D)g;
BasicStroke bs=new BasicStroke(10.0f,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);
g2d.setStroke(bs);
g2d.drawLine(30,10,100,10);
bs=new BasicStroke(10.0f,BasicStroke.CAP_ROUND,BasicStroke.JOIN_BEVEL);
g2d.setStroke(bs);
g2d.drawLine(30,30,100,30);
bs=new BasicStroke(10.0f,BasicStroke.CAP_SQUARE,BasicStroke.JOIN_BEVEL);
g2d.setStroke(bs);
g2d.drawLine(30,50,100,50);
GeneralPath path=new GeneralPath();
path.moveTo(140,50);
path.lineTo(190,10);
path.lineTo(240,50);
bs=new BasicStroke(10.0f,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);
g2d.setStroke(bs);
g2d.draw(path);
path.reset();
path.moveTo(140,70);
path.lineTo(190,30);
path.lineTo(240,70);
bs=new BasicStroke(10.0f,BasicStroke.CAP_ROUND,BasicStroke.JOIN_ROUND);
g2d.setStroke(bs);
g2d.draw(path);
path.reset();
path.moveTo(140,90);
path.lineTo(190,50);
path.lineTo(240,90);
bs=new BasicStroke(10.0f,BasicStroke.CAP_SQUARE,BasicStroke.JOIN_MITER);
g2d.setStroke(bs);
g2d.draw(path);
Ellipse2D e=new Ellipse2D.Float(20,60,100,50);
GradientPaint dp=new GradientPaint(20,60,Color.YELLOW,100,50,Color.BLUE);
g2d.setPaint(dp);
g2d.fill(e);
Image img=new ImageIcon("mmm.jpg").getImage();
BufferedImage bImage=new BufferedImage(img.getWidth(null),img.getHeight(null),BufferedImage.TYPE_INT_RGB);
//BufferedImage bImage=new BufferedImage(img.getWidth(),img.getHeight(),BufferedImage.TYPE_INT_RGB);
Graphics2D g2=bImage.createGraphics();
g2.drawImage(img,null,null);
Rectangle2D tr=new Rectangle2D.Double(0,0,bImage.getWidth(),bImage.getHeight());
TexturePaint tp=new TexturePaint(bImage,tr);
g2d.setPaint(tp);
RoundRectangle2D r=new RoundRectangle2D.Float(260,10,100,100,50,50);
g2d.fill(r);
g2d.setColor(Color.BLACK);
g2d.setStroke(new BasicStroke(1.0f));
Shape shapes=new Rectangle2D.Double(30,120,30,50);
g2d.draw(shapes);
AffineTransform at=AffineTransform.getTranslateInstance(60,0);
g2d.transform(at);
AffineTransform atx=AffineTransform.getRotateInstance(Math.PI/6,30,120);
Shape nshape=atx.createTransformedShape(shapes);
g2d.draw(nshape);
g2d.transform(at);
atx=AffineTransform.getShearInstance(0.0,0.3);
nshape=atx.createTransformedShape(shapes);
g2d.draw(nshape);
Rectangle2D rr=new Rectangle2D.Float(80,120,40,40);
Shape shapel=new Ellipse2D.Float(80,120,100,100);
Shape oldClip=g2d.getClip();
g2d.setClip(rr);
g2d.fill(shapel);
g2d.setClip(oldClip);
Rectangle2D redRect=new Rectangle2D.Float(130,120,80,80);
Rectangle2D blueRect=new Rectangle2D.Float(160,130,80,80);
AlphaComposite ac=AlphaComposite.getInstance(AlphaComposite.SRC_OVER,0.5f);
g2d.setPaint(Color.red);
g2d.fill(redRect);
g2d.setComposite(ac);
g2d.setPaint(Color.BLUE);
g2d.fill(blueRect);
}
}
我用的是JDK1.5
如果不加这句:import java.awt.Shape;会出现10个编译错误 全都是有关Shape的!加了 才能正常编译~~请问是为什么呢?不是已经import java.awt.*;
让别人编 译(他用的是JDK1.4.2) 不加import java.awt.Shape; 却能正常编译 请问是为什么呢???
还有这个程序运行结果有点问题~~希望也能帮我指出来!谢谢!