Java学习记录 AWT绘图篇

本文介绍了Java AWT中的图形绘制,包括Canvas画布、Graphics和Graphics2D绘图类的使用,详细讲解了颜色、画笔、字体设置、文本显示、图像处理如缩放、翻转、旋转和倾斜的操作,以及绘制流程。通过示例代码展示了如何在Java中实现图形绘制和图像处理。
摘要由CSDN通过智能技术生成

绘制图形

Canvas画布类

Class Canvas

java.lang.Object
java.awt.Component
java.awt.Canvas

用来 绘制图形 或 捕获用户输入的事件。绘制图形需要绘图方法实现绘制图形

方法 说明
paint(Graphics g) 绘图
repaint(Graphics g) 重新绘图(刷新

Graphics绘图类

Class Graphics

java.lang.Object
java.awt.Graphics

Graphics绘图类 是所有图形的抽象基类,它提供了绘图常用的方法

图形 方法
弧形 drawArc(int x , int y , int width , int height , int startAngle , int arcAngle)
直线 drawLine(int x1 , int y1 , int x2 , int y2)
椭圆 drawOval(int x , int y , int width , int height)
多边形 drawPolygon(int[] xPoints , int[] yPoints , int nPoints)
多边线 drawPolyline(int[] xPoints , int[] yPoints , int nPoints)
矩形 drawRect(int x , int y , int width , int height)
圆角矩形 drawRoundRect(int x , int y , int width , int height , int arcWidth, int arcHeight)
实心弧形 fillArc(int x , int y , int width , int height , int height , int startAngle , int arcAngle)
实心椭圆 fillOval(int x , int y , int width , int height)
实心多边形 fillPolygon(int[] xPoints , int[] yPoints , int nPoints)
实心矩形 fillRect(int x , int y , int width , int height)
实心圆角矩形 fillRoundRect(int x , int y , int width , int height , int arcWidth, int arcHeight)
参数 说明
x 坐标X
y 坐标Y
width 宽度
height 高度
startAngle 起始角度
arcAngle 相对起始角度的弧的角度范围
xPoints X坐标的数组
yPoints Y坐标的数组
nPoints 总数
arcWidth 四角圆弧的水平直径
arcHeight 四角圆弧的垂直直径

Graphics2D新绘图类

Class Graphics2D

java.lang.Object
java.awt.Graphics
java.awt.Graphics2D

Graphics类的扩展 Graphics2D新绘图类,它必须要 draw()和fill() 方法 绘图
方法的参数需要Shape图形接口实现绘图(接口在 java.awt.geom 包下

抽象方法 说明
draw(Shape form) 绘制图形
fill(Shape form) 填充图形

form:Shape图形接口的对象

代码绘制流程

  1. 创建窗体对象
  2. 创建 Canvas画布类 并添加入窗体容器里
  3. 调用 Canvas画布类中 paint(Graphics g)方法
  4. 调用 paint(Graphics g)方法 中的 Graphics对象 或 创建Graphics2D绘图对象
  5. 调用 绘图的抽象方法 实现绘图

方式二:(从步骤4开始,适合批量绘图)

  1. 实例 java.awt.geom包 中的图形类,赋值至 Shape接口 对象
  2. 传参 调用 Graphics2D类 中的 draw() 或 fill() 方法 实现绘图

大致例子:

大致例子:

import javax.swing.*;
import java.awt.*;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Rectangle2D;
import java.awt.geom.RectangularShape;

public class DrawFrame extends JFrame {
   

    private Container c = getContentPane();

    public DrawFrame(){
   
        setBounds(400 , 300 , 360 , 160);
        setDefaultCloseOperation(3);

        //Canvas匿名画布类 重写paint()绘图方法
        c.add(new Canvas(){
   
           @Override
           public void paint(Graphics g){
   
               Graphics2D g2 = (Graphics2D) g;
//方法一
               g2.drawRoundRect(10 , 5 , 100 , 100 , 10 , 10);
               g2.fillOval(20 , 15 , 80 , 80);
//方法二
               //声明图形数组
               Shape[] shapes = new Shape[4];
               //以double精度创建
               //绘制圆
               shapes[0] = new Ellipse2D.Double(120, 5 , 100 ,100);
               //绘制矩形
               shapes[1] = new Rectangle2D.Double(230 ,5 ,100 ,100);
                //绘制矩形
               shapes[2] = new Rectangle2D.Double(130 ,15 ,80 ,80);
               //绘制圆
               shapes[3] = new Ellipse2D.Double(240 ,15 ,80 ,80);
               for(Shape tmp : shapes){
   
                   //Rectangle2D bounds = tmp.getBounds2D();    (Rectangle2D是RectangularShape的子类
                   //RectangularShape类 用来查询和修改矩形框架的类
                   RectangularShape bounds = tmp.getBounds2D();
                   if(bounds.getWidth() == 80){
   
                       //第二组图形创建
                       g2.fill(tmp);
                   }else{
   
                       //第一组图形创建
                       g2.draw(tmp);
                   }
               }
           }
        });

    }

    public static void main(String[] args) {
   
        new DrawFrame().setVisible(true);
    }
}

运行结果:

绘图属性

颜色

Class Color

java.lang.Object
java.awt.Color

Color类 提供设置颜色的对象
构造方法

Color(int R , int G , int B)
Color(int RGB)

参数说明

R: 红色颜色值
G: 绿色颜色值
B: 蓝色颜色值
RGB: 组合RGB颜色值

Color常量值 有已定义好的颜色对象,可直接调用(自行API查

画笔

Class BasicStroke

java.lang.Object
java.awt.BasicStroke

BasicStroke类 为图形轮廓定义基本渲染属性(定义边线属性
实现前提需要Stroke接口实现类!!!

**构造方法 **

BasicStroke()
BasicStroke(float width)
BasicStroke(float width , int cap , int join)
BasicStroke(float width , int cap , int join , float miterlimit)
BasicStroke(float width , int cap , int join , float miterlimit , float[] dash , float dash_phase)

参数 说明
width 画笔宽度
cap 线端点的装饰
join 应用在路径线段交会处的装饰
miterlimit 斜接处的剪裁限制
dash 虚线模式的数组
dash_phase 开始虚线模式的偏移量

CAP参数 3个常量及标识

JOIN参数 3常量及标识

代码实现流程:

  1. 创建Stroke接口对象,实例BasicStroke对象
  2. 设置画笔 setStroke(Stroke)方法

大致例子:

import javax.swing.*;
import java.awt.*;

public class BrushTest extends 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值