您的位置:首页 > 编程语言 > Java开发

(Java2D 学习笔记系列) (一)一个简单的图像填充实例及其分析理解

2010-10-28 22:23 1231 查看
一. Java 2D API

它包含在以下几个包中

java.awt
java.awt.geom
java.awt.font
java.awt.color
java.awt.image
java.awt.image.renderable
java.awt.print


二、Graphics 与 Graphics2D

1. 两者关系

前者是一个抽象类

后者是一个普通类,它是Graphics的扩展,提供Java的二维图形绘制
两者的可用 如下转化
void paint(Graphics g){
Graphics2D g2d = (Graphics2D)g;
//下面使用 g2d 绘制图形
}

2. 绘制图形

Java 2D API 中图像轮廓绘制和填充是两个独立的操作
绘制:用一个实现了Stroke接口的对象定义的画笔,来draw画形状轮廓
填充:用一个实现了Paint接口的对象定义的画笔,来Filll填充图形
绘制字符串时:drawString 直接实现填充

如:
//---------------draw--------------------
drawLine();
drawOval();
drawPolygon();
drawPolyLine();
drawRect();
//---------------fill--------------------
fillOval();
fillRect();
fillPolygon();
fillPolyLine();

三、void paint(Graphics g)函数
当一个conponent需要重绘时,就会调用paint函数
我们就可以在这个函数里实现一些绘制代码
四、代码
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.*;
public class Test_JFrame extends JFrame{
private myPanel p;
public Test_JFrame(String name){
super();			//继承父类的构造方法
setTitle(name);                 //名字
setBounds(0,0,300,300);		//大小
BorderLayout bl = new BorderLayout();
bl.setHgap(20);
bl.setVgap(20);
getContentPane().setLayout(bl);//布局管理
p = new myPanel("jarvischu");
p.setBounds(0, 0, 150, 150);
getContentPane().add(p,bl.CENTER);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);//设置默认关闭操作
}
public static void main(String args[]){
Test_JFrame frame = new Test_JFrame("JarvisChu");
frame.setVisible(true);
}
}
class myPanel extends JPanel{
private String m_Name;
public myPanel(String name){
m_Name = name;
}
public void paint(Graphics g){
Graphics2D g2d = (Graphics2D)g;
GradientPaint grdp = new GradientPaint(0,0,Color.blue,100,50,Color.RED);
//创建一个渐变填充的对象
g2d.setPaint(grdp);                        //选中该Paint对象
g2d.fillRect(0, 0, 150, 150);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐