今天我们来学习自定义绘图功能
前期准备:
常用方法
普通画笔示例代码:
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Polygon;
import java.awt.Toolkit;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;
/**
* 自定义绘图
* @author LinChi
*
*/
public class TestGraphics extends JFrame{
private JPanel pan;
public TestGraphics() {
super("TestGraphics");
this.setSize(400,500);
this.setLocationRelativeTo(null);
addComponent();
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
/**
* 添加组件
*/
private void addComponent() {
//画布 任何组件都可以作为画布
pan = new JPanel() {
public void paint(Graphics g) {
super.paint(g);
//注意:jvm对图片格式的支持不多 jpg png jpeg gif
//加载图片
// Image img = Toolkit.getDefaultToolkit().createImage("C:\\Users\\Administrator\\Pictures\\Saved Pictures/01.jpg");
Image img = new ImageIcon("C:\\Users\\Administrator\\Pictures\\Saved Pictures/01.jpg").getImage();
//绘制图片
g.drawImage(img, 10, 10,100,100,0,0,20,20,null);
//释放绘制资源
g.dispose();
}
};
//添加画布到窗口
this.add(pan);
}
public static void main(String[] args) {
new TestGraphics();
}
}
成果截图:
2D画笔示例代码:
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Font;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Polygon;
import java.awt.RadialGradientPaint;
import java.awt.Stroke;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Line2D;
import java.awt.geom.Rectangle2D;
import javax.swing.JFrame;
import javax.swing.JPanel;
/**
* 自定义2D绘图
* @author LinChi
*
*/
public class TestGraphics2D extends JFrame{
private JPanel pan;
public TestGraphics2D() {
super("TestGraphics");
this.setSize(400,500);
this.setLocationRelativeTo(null);
addComponent();
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
/**
* 添加组件
*/
private void addComponent() {
//画布 任何组件都可以作为画布
pan = new JPanel() {
public void paint(Graphics g) {
super.paint(g);
//获取2D画笔
Graphics2D g2 = (Graphics2D)g;
//特点1- 设定线的粗细
Stroke stroke = new BasicStroke(10);
g2.setStroke(stroke);
//设置画笔的背景色填充图形,视觉效果像是擦除
g2.setBackground(Color.LIGHT_GRAY);
//构造2D对象
Line2D line = new Line2D.Double(20,20,100,100);
//使用2D画笔绘制2D图形
g2.draw(line);
// g2.fill(line);
//特点2- 可以自定义绘制模式,使用渐变色填充或者绘制图形
GradientPaint gp = new GradientPaint(120,20,Color.WHITE, 180,180,Color.BLACK,true);
//设定画笔绘画模式
g2.setPaint(gp);
//填充矩形
Rectangle2D rect = new Rectangle2D.Double(120,20,80,80);
// g2.setColor(Color.YELLOW);
g2.fill(rect);
g2.setPaint(new GradientPaint(200,100,Color.WHITE, 120,20,Color.BLACK));
//绘制矩形
// g2.setColor(Color.BLACK);
g2.draw(rect);
//圆形渐变
RadialGradientPaint rgp = new RadialGradientPaint(110, 310, 90, new float[]{0,0.5f,0.9f,1},new Color[] {Color.WHITE,Color.LIGHT_GRAY,Color.GRAY,Color.LIGHT_GRAY});
//设定模式
g2.setPaint(rgp);
//圆
Ellipse2D ell = new Ellipse2D.Double(20, 220, 180, 180);
// g2.setColor(Color.YELLOW);
g2.fill(ell);
// g2.setColor(Color.BLACK);
g2.draw(ell);
//清理
g2.clearRect(50, 50, 100, 100);
//释放绘制资源
g.dispose();
}
};
//设定画布区域为灰色
pan.setBackground(Color.LIGHT_GRAY);
//添加画布到窗口
this.add(pan);
}
public static void main(String[] args) {
new TestGraphics2D();
}
}
成果截图:
3、图片绘画
示例代码:
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Polygon;
import java.awt.Toolkit;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;
/**
* 自定义绘图
* @author LinChi
*
*/
public class TestGraphics extends JFrame{
private JPanel pan;
public TestGraphics() {
super("TestGraphics");
this.setSize(400,500);
this.setLocationRelativeTo(null);
addComponent();
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
/**
* 添加组件
*/
private void addComponent() {
//画布 任何组件都可以作为画布
pan = new JPanel() {
public void paint(Graphics g) {
super.paint(g);
//注意:jvm对图片格式的支持不多 jpg png jpeg gif
//加载图片
// Image img = Toolkit.getDefaultToolkit().createImage("C:\\Users\\Administrator\\Pictures\\Saved Pictures/01.jpg");
Image img = new ImageIcon("C:\\Users\\Administrator\\Pictures\\Saved Pictures/01.jpg").getImage();
//绘制图片
g.drawImage(img, 10, 10,100,100,0,0,20,20,null);
//释放绘制资源
g.dispose();
}
};
//添加画布到窗口
this.add(pan);
}
public static void main(String[] args) {
new TestGraphics();
}
}
成果截图:
今天的学习分享就到此结束了,期待明天的精彩展现!
qq_41986840 发布了5 篇原创文章 · 获赞 1 · 访问量 75 私信 关注