粤嵌学习打卡第4天(GUI中自定义绘图)

今天我们来学习自定义绘图功能
前期准备:
粤嵌学习打卡第4天(GUI中自定义绘图)
常用方法
粤嵌学习打卡第4天(GUI中自定义绘图)
粤嵌学习打卡第4天(GUI中自定义绘图)
普通画笔示例代码:


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();
	}
}

成果截图:
粤嵌学习打卡第4天(GUI中自定义绘图)
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();
	}
}

成果截图:
粤嵌学习打卡第4天(GUI中自定义绘图)

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();
	}
}

成果截图:
粤嵌学习打卡第4天(GUI中自定义绘图)


今天的学习分享就到此结束了,期待明天的精彩展现!


粤嵌学习打卡第4天(GUI中自定义绘图)粤嵌学习打卡第4天(GUI中自定义绘图) qq_41986840 发布了5 篇原创文章 · 获赞 1 · 访问量 75 私信 关注
上一篇:python—文件字符分布


下一篇:蓝桥杯————单词分析