自学内容网 自学内容网

java绘图

绘图准备

        在正式绘图前,我们还需进行一系列操作来为绘图提供条件

1、创建一个类继承自JPanel类,这相当于创建了一个画板

class MyPanel extends JPanel{}

2、在该类中重写父类的构造方法paint,并使用Graphics对象来进行绘图。Graphics类提供了绘制基本形状、文本和图像的方法。该方法无需显式的调用,以下几种情况,系统会自动调用该方法:
        1、首次运行程序时,系统会调用该方法绘制界面
        2、窗口最小化后再最大化时
        3、窗口的大小发生变化时
        4、repaint函数被调用
        之后我们绘制各种图形都可以在该类中执行

class MyPanel extends JPanel{
    @Override
    public void paint(Graphics g) {//绘图方法
        super.paint(g);//调用父类的方法完成初始化
    }}

3、我们还需要有一个窗口/框架来显示该画板,这就需要JFrame类,此时有两种方法
        1、创建一个JFrame对象,作为应用程序的窗口

public class Go {
    public static void main(String[] args) {
        JFrame frame = new JFrame("绘图示例"); // 创建一个JFrame对象,作为应用程序的窗口
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 设置当用户点击窗口关闭按钮时,程序会退出
        MyPanel mp = new MyPanel();// 创建自定义面板的实例
        frame.add(mp);// 将自定义面板添加到窗口中
        frame.setSize(1000, 800);// 设置窗口的大小
        frame.setVisible(true);// 显示窗口
    }}

        2、直接使主类继承自JFrame类,调用构造方法来创建窗口

public class One_More extends JFrame{
    private MyPanel mp2=new MyPanel();
    public static void main(String[] args) {
        new One_More();
    }
    public One_More(){
        this.add(mp2);
        this.setSize(1000,800);
        this.setVisible(true);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

        此时基础操作就已做完了,我们就可以在先前创建的继承自JPanel的类中执行绘图操作,以下是一些常用的绘图方法:

绘图方法

绘制基本形状

        1、drawLine(int x1, int y1, int x2, int y2): 绘制一条从点(x1, y1)到点(x2, y2)的直线。

        2、drawRect(int x, int y, int width, int height): 绘制一个矩形,其左上角位于(x, y),宽度和高度分别由width和height指定。这个方法只绘制矩形的边框。

        3、fillRect(int x, int y, int width, int height): 绘制一个填充的矩形,其左上角位于(x, y),宽度和高度分别由width和height指定。

        4、drawRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight): 绘制一个圆角矩形,其左上角位于(x, y),宽度和高度分别由width和height指定,圆角的弧度由arcWidth和arcHeight指定。

        5、fillRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight): 绘制一个填充的圆角矩形。

        6、drawOval(int x, int y, int width, int height): 绘制一个圆,其外接矩形左上角位于(x, y),宽度和高度分别由width和height指定。

        7、fillOval(int x, int y, int width, int height): 绘制一个填充的圆。

        8、drawArc(int x, int y, int width, int height, int startAngle, int arcAngle): 绘制一个圆弧,其外接矩形左上角位于(x, y),宽度和高度分别由width和height指定,起始角度为startAngle,圆弧的角度为arcAngle。

        9、fillArc(int x, int y, int width, int height, int startAngle, int arcAngle): 绘制一个填充的圆弧。

绘制文本

        1、drawString(String str, int x, int y): 在坐标(x, y)处绘制文本字符串str。这里的(x, y)指的是字符串基线(baseline)的起始位置,即左下角

        2、drawChars(char[] data, int offset, int length, int x, int y): 绘制字符数组data中从offset开始的length个字符,起始位置在(x, y)。

        3、drawBytes(byte[] data, int offset, int length, int x, int y): 绘制字节数组data中从offset开始的length个字节,起始位置在(x, y)。

绘制图像

        1、drawImage(Image img, int x, int y, ImageObserver observer): 在坐标(x, y)处绘制图像img。其中image类需要创建,先将图片放在根目录下,并创建Image类对象:Image image = Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/1.png"));

        2、drawImage(Image img, int x, int y, int width, int height, ImageObserver observer): 在坐标(x, y)处绘制图像img,并将其缩放到指定的width和height。

        3、drawImage(Image img, int x, int y, Color bgcolor, ImageObserver observer): 在坐标(x, y)处绘制图像img,并使用指定的背景色bgcolor。

        4、drawImage(Image img, int x, int y, int width, int height, Color bgcolor, ImageObserver observer): 在坐标(x, y)处绘制图像img,将其缩放到指定的width和height,并使用指定的背景色bgcolor。

其他绘图方法

        1、setColor(Color c): 设置绘图的颜色。

        2、setFont(Font font): 设置绘制文本时使用的字体。

        3、setClip(int x, int y, int width, int height): 设置绘图区域的剪裁区域,只有剪裁区域内的部分才会被绘制。

//      绘制基本形状
        g.drawLine(0, 0, 200, 200);//绘制一条从点(x1, y1)到点(x2, y2)的直线。
        g.drawRect(2, 2, 200, 200);//绘制一个矩形,其左上角位于(x, y),宽度和高度分别由width和height指定。这个方法只绘制矩形的边框。
        g.fillRect(5, 5, 10, 10);//绘制一个填充的矩形,其左上角位于(x,y),宽度和高度分别由width和height指定。
        g.drawRoundRect(5, 5, 100, 200, 50, 50);//绘制一个圆角矩形,其左上角位于(x,y),宽度和高度分别由width和height指定,圆角的弧度由arcWidth和arcHeight指定。
        g.fillRoundRect(5, 5, 100, 200, 50, 50);//绘制一个填充的圆角矩形。
        g.drawRoundRect(5, 5, 100, 100, 200, 200);//绘制一个圆角矩形,其左上角位于(x,y),宽度和高度分别由width和height指定,圆角的弧度由arcWidth和arcHeight指定。//6g.drawOval(int x,int y,int width,int height);//绘制一个圆,其外接矩形左上角位于(x,y),宽度和高度分别由width和height指定。
        g.fillOval(10, 10, 200, 200);//绘制一个填充的圆。
        g.drawArc(5, 5, 100, 100, 200, 200);//绘制一个圆弧,其外接矩形左上角位于(x,y),宽度和高度分别由width和height指定,起始角度为startAngle,圆弧的角度为arcAngle。
        g.fillArc(5, 5, 100, 100, 200, 200);//绘制一个填充的圆弧。
//      绘制文本
        g.drawString("这是个字符串", 200, 200);//在坐标(x,y)处绘制文本字符串str。这里的(x,y)指的是字符串基线(baseline)的起始位置,即左下角
        char[] charArray = {'a', 'b', 'c', 'd', 'e', 'f'};
        g.drawChars(charArray, 1, 5, 100, 100);//绘制字符数组data中从offset开始的length个字符,起始位置在(x,y)。
        byte[] bytes = {1, 2, 3, 4, 5, 6};
        g.drawBytes(bytes, 1, 3, 200, 200);//绘制字节数组data中从offset开始的length个字节,起始位置在(x,y)。
//      绘制图像
        Image image = Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/1.png"));
        g.drawImage(image, 20, 20, this);//在坐标(x,y)处绘制图像img。其中image类需要创建,先将图片放在根目录下,并创建Image类对象:Image image=Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/.png"));//
        g.drawImage(image, 20, 20, Color.blue, this);//在坐标(x,y)处绘制图像img,并使用指定的背景色bgcolor。
        g.drawImage(image, 20, 20, 960, 528, Color.blue, this);//在坐标(x, y) 处绘制图像img,将其缩放到指定的width和height,并使用指定的背景色bgcolor。
//      其他绘图方法
        g.setColor(Color.red);//设置绘图的颜色。
        g.setFont(new Font("隶书", Font.BOLD, 20));//设置绘制文本时使用的字体。
        g.setClip(0, 0, 100, 100);//设置绘图区域的剪裁区域,只有剪裁区域内的部分才会被绘制。


原文地址:https://blog.csdn.net/qq_65501197/article/details/142785835

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!