java考点之从程序看图形构建

离自考已经不足一月了,但要处理的事情还是挺多的,一方面要找房子,另一方面要应付工作。希望能在十一前把房子的事稳定下来,稳下心来,复习。也没几天了。

如题:2020年10月

分析

有些蒙,刚开始也没看懂。虽然不难!还是从程序入手,看看如何得到答案的?详见程序里的注释

程序(答案)

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

/**
 * 〈一句话功能简述〉<br>
 * 〈图形题〉
 *
 * @author guangod
 * @create 2022/9/22
 * @since 1.0.0
 */
public class DrawGraphics {
    public static void main(String[] args) {
        DrawingExample de = new DrawingExample();
        de.go();
    }
}

class DrawingExample {
    JFrame frame;//定义一个框架
    MyPanel panel;//

    public void go() {
        frame = new JFrame("Test33");
        panel = new MyPanel();
        panel.repaint();//这个函数是什么作用来?
        frame.getContentPane().add(panel , "Center");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(360 , 300);
        frame.setVisible(true);
        frame.pack();
    }

}
    class MyPanel extends JPanel {
        int xpoints1[] = {300 , 500 , 450 , 250 , 300};
        int ypoints1[] = {100 , 100 , 200 , 200 , 100};
        int xpoints2[] = new int[5];
        int ypoints2[] = new int[5];

        protected void paintComponent(Graphics graphics) {
            //此处要求填写代码
            for (int i = 0; i < 5; i++) {
                xpoints2[i] = xpoints1[i] + 60;
                ypoints2[i] = ypoints1[i] + 80;
            }
            graphics.setColor(Color.red);//为图形着色
            graphics.drawPolygon(xpoints1 , ypoints1 , 5);
            graphics.setColor(Color.blue);
            graphics.drawPolygon(xpoints2 , ypoints2 , 5);
            graphics.drawLine(xpoints1[0] , ypoints1[0] , xpoints2[2] , ypoints2[2]);//这个坐标点的确定,自己画个平行四边形就知道
        }
    }

涉及到的绘图基本知识

主要就是java.awt包中的Graphics类,包括了建立字体,设定显示颜色、显示图像和文本,绘制和填充各种几何图形。
Graphics,是一个抽象类,是所有图形处理的基础。绘图方法分为正常模式setPaintModel(也就是后绘制的图形覆盖在先绘制的图形之上)和异或模式setXORModell(将当前正要绘图的颜色、原先绘制的颜色以及异或模式设定的颜色作特定的运算)
在某个组件中绘图,为这个组件所属的子类重写paint()方法,但在JComponent子类的组件中绘图,应重写paintComponent();如程序中,在面板中绘图,就要在JPanel的子类中重写paintComponent(Graphics g)方法。

关于repaint()方法

paint()方法是将组件显示出来。当需要重绘组件时,可以调用repaint()方法,将自动调用paint(Graphics g).
从题目中,确实是frame框架调用了repaint()方法,但并没有看到调用paint()方法。
这个其实是由java系统自动提供的Graphics图形对象;至于是什么图形则是由图形所调用的方法决定。

绘制平行四边形用什么方法,为什么多出一个点

没有像drawRect()绘制矩形drawRoundRect()这种图形的方法,但提供了一个drawPolygon(int[] xPoints,int[]yPoints,int nPoints);//绘制由x和y坐标数组定义的一系列连接线组成的图像。
这个连接线构成的图像最后一个点必须与第一个点相同,才是一个闭合的,所以题目中的平行四边形多出来一个点。

其他的绘图方法规律

这个不太好记,那只能根据题意了。但其中的规律需要知道。

绘图方法都是以小写的draw开头+图形英文名称,

图形的setColor()设置的是前景色,setBackGround()设置的是背景色

fill+图形的英文名称是填充颜色

drawPolygon()是画多边形,fillPolygon()是填充多边形

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

guangod

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值