离自考已经不足一月了,但要处理的事情还是挺多的,一方面要找房子,另一方面要应付工作。希望能在十一前把房子的事稳定下来,稳下心来,复习。也没几天了。
如题: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()是填充多边形