19.java绘图

A.Graphics类

   Graphics类是java.awt包中的一个类,它用于在图形用户界面(GUI)或其他图形应用程序中进行绘制。该类通常与Componentpaint方法一起使用,以在组件上进行绘制操作。

        一些Graphics类的常见用法和方法:

在组件上绘制图形:

import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;

class MyPanel extends JPanel {
    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        
        // 绘制矩形
        g.drawRect(50, 50, 100, 100);
        
        // 绘制填充的矩形
        g.setColor(Color.BLUE);
        g.fillRect(200, 50, 100, 100);
    }
}

public class MyFrame extends JFrame {
    public MyFrame() {
        add(new MyPanel());
        setSize(300, 200);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        setVisible(true);
    }

    public static void main(String[] args) {
        new MyFrame();
    }
}

B.Graphics2D

  Graphics2D类是Java中java.awt包中的一个类,它是Graphics类的子类,提供了更丰富和高级的图形绘制功能。Graphics2D类支持矢量图形和更高级的绘图操作,与Graphics相比,它提供了更多的控制选项和更丰富的功能。

  Graphics2D类的一些常见用法

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JFrame;
import javax.swing.JPanel;

class MyPanel extends JPanel {
    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        
        // 将Graphics对象转换为Graphics2D对象
        Graphics2D g2d = (Graphics2D) g;
        
        // 绘制直线
        g2d.drawLine(50, 50, 150, 150);
        
        // 绘制圆形
        g2d.setColor(Color.RED);
        g2d.drawOval(200, 50, 100, 100);
    }
}

public class MyFrame extends JFrame {
    public MyFrame() {
        add(new MyPanel());
        setSize(300, 200);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        setVisible(true);
    }

    public static void main(String[] args) {
        new MyFrame();
    }
}

C.绘制一个图像

        可以使用GraphicsGraphics2D对象来绘制图像

D.绘制一个图形

例题1

例题2

绘制颜色与画笔属性

        以使用GraphicsGraphics2D对象来绘制颜色和定义画笔属性

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JFrame;
import javax.swing.JPanel;

class ColorAndStrokePanel extends JPanel {
    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        
        // 将Graphics对象转换为Graphics2D对象
        Graphics2D g2d = (Graphics2D) g;

        // 设置颜色
        g2d.setColor(Color.BLUE);
        // 绘制填充的矩形
        g2d.fillRect(20, 20, 80, 80);

        // 设置颜色
        g2d.setColor(Color.RED);
        // 设置画笔宽度
        g2d.setStroke(new BasicStroke(5));
        // 绘制矩形边框
        g2d.drawRect(120, 20, 80, 80);
    }
}

public class ColorAndStrokeExample extends JFrame {

    public ColorAndStrokeExample() {
        add(new ColorAndStrokePanel());
        setSize(250, 150);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        setVisible(true);
    }

    public static void main(String[] args) {
        new ColorAndStrokeExample();
    }
}

设置颜色

使用 Color 类可以创建任意颜色的对象,不用担心平台是否支持该颜色,因为 Java 以跨平台和与硬件无关的方式支持颜色管理。创建 Color 对象的构造方法有如下两种:

Color col = new Color(int r, int g, int b)
Color col = new Color(int rgb)

设置画笔

Color类提供了一组预定义的颜色常量,

这些预定义的颜色常量包括但不限于:

  • Color.RED
  • Color.GREEN
  • Color.BLUE
  • Color.YELLOW
  • Color.ORANGE
  • Color.PINK
  • Color.CYAN
  • Color.MAGENTA
  • Color.BLACK
  • Color.WHITE
  • Color.GRAY
  • Color.LIGHT_GRAY
  • Color.DARK_GRAY

绘制文本

Java绘图类也可以用来绘制文本内容,且可以在绘制设置字体的样式、大小等。

设置字体

        可以使用Font类来设置字体的样式、大小和其他属性

  • Font类的构造函数接受三个参数:字体名称("Arial")、字体样式(Font.PLAINFont.BOLDFont.ITALIC、或它们的组合)、以及字体大小。
  • 使用g2d.setFont(font)方法来设置当前绘图上下文的字体。
  • g2d.drawString(text, x, y)方法用于在指定位置绘制文本。

E.显示文字

例题3

F.显示图片

drawimage(lmage img, int x, int y, lmageObserver observer)

        绘图类不仅可以绘制图形和文本,还可以使用 drawImage0方法将图片资源显示到绘图上下文中,而且可以实现各种特效处理,如图片的缩放、翻转等。有关图像处理的知识将在 19.6 节讲解,本节主要讲解如何显示图片。

例题4

G.图像处理

        开发高级的桌面应用程序,必须掌握一些图像处理与动画制作的技术,如在程序中显示统计图,销售趋势图、动态按钮等

放大与缩小

drawmage(lmage img, int x, int y, int width, int height, lmageObserver observer)

使用了 drawImage0方法将图片以原始大小显示在窗体中,要想实现图的放大与缩小,则需要使用它的重载方法。

例题5

图像翻转

        水平垂直翻转

图像旋转

        图像旋转

        theta 是指旋转的弧度
说明rotate0方法只接受旋转的弧度作为参数,可以使用 Math 类的 toRadians0)方法将角度转换为弧toRadians(方法接受角度值作为参数,返回值是转换完毕的孤度值。

rotate(double theta)

        需要调用 Graphics2D 类的 rotate0方法,该方法将根据指定的弧度旋转图像。

图像的翻转

需要使用 drawImage0方法的另一个重载方法。

drawimage(lmage img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, lmageObserver observer

图像倾斜

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值