今天,学着书上的代码练习了一下对渐变颜色填充图形的绘制,书上画的本来是矩形的经过我的修改后改成了圆形,具体代码如下:
package text;
import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.TexturePaint;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.security.spec.EllipticCurve;
import java.util.regex.Pattern;
import javax.swing.JFrame;
public class PaintDemo extends JFrame{
public PaintDemo() {
// TODO Auto-generated constructor stub
super("颜色渐及纹理填充演示例");
setSize(200,150);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
@Override
public void paint(Graphics g) {
// TODO Auto-generated method stub
super.paint(g);
Graphics2D g2d=(Graphics2D)g;
//以颜色从白到蓝周期性渐变设置绘图方式
g2d.setPaint(new GradientPaint(20f, 50f, Color.white, 80f,80f,Color.black,true));
g2d.fill(new Ellipse2D.Double(20,50,70,70));
//以上述方式绘制矩形
BufferedImage texture=new BufferedImage(5, 5, 1);//创建BufferedImage对象
Graphics2D pattern=texture.createGraphics();//创建一个Graphics2D对象
pattern.setColor(Color.blue);//设置纹理图案的颜色
pattern.fillRect(0, 0, 5, 5);//填充纹理图案
pattern.setColor(Color.white);//设置纹理图案的颜色
pattern.fillOval(0, 0, 5, 5);//以外接圆方式填充纹理图案
Rectangle rect=new Rectangle(0, 0,5,5);//创建用于定位和复制纹理的Rectangle2D对象
g2d.setPaint(new TexturePaint(texture,rect));//以指定的纹理设置绘图方式
g2d.fill(new Ellipse2D.Double(100,50,70,70));//以纹理方式绘制圆形
}
public static void main(String[] args) {
new PaintDemo();
}
}
绘制之后的效果如图:
虽然,java的重点是网络编程,文件io流,以及数据库部分,但我对图形编程挺有兴趣的,练着玩一下吧!