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

一. 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); } }  

 

转载于:https://www.cnblogs.com/JarvisChu/archive/2010/10/28/2752529.html

你可能感兴趣的:(java)