Java学习--绘制画板

题目

在界面上任意选取四个点,分别记为A B C 和 P。
在A B C中随机的选取一个点,和P点取中点,绘制中点,并且将中点记为新的P。

知识点

Graphics 提供了绘图相关的方法,根据绘图所在的组件,在组件可见之后,调用getGraphics的方法

关键代码讲解

package window;

import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.Random;

public class DrawListener implements MouseListener{
   Graphics g ;
	
	//设置画布的方法
	public void setGraphics(Graphics g) {
		this.g = g;
	}

	//记录坐标使用的数字
	int startx,starty,endx,endy;
	
	public void mousePressed(MouseEvent e) {
		//记录坐标
		startx = e.getX();
		starty = e.getY();
	}
	int i=0;
	double[][] a=new double[4][2];
    public void mouseReleased(MouseEvent e) {
    	//记录坐标
    	endx = e.getX();
    	endy = e.getY();
    	//画线
    	//g.drawLine(startx, starty, endx, endy);
    	if(i<4)
    	point(startx, starty, endx, endy);
    	else{
    		Random rand = new Random();
    		int number=100;
    		while(number>0){
    			int num=rand.nextInt(3)+1;
    			switch(num){
    			case 1:a[3][0]=(a[0][0]+a[3][0])/2;a[3][1]=(a[0][1]+a[3][1])/2;
    			System.out.println("当前P点的坐标值为"+"("+a[3][0]+","+a[3][1]+")");break;
    			case 2:a[3][0]=(a[1][0]+a[3][0])/2;a[3][1]=(a[1][1]+a[3][1])/2;
    			System.out.println("当前P点的坐标值为"+"("+a[3][0]+","+a[3][1]+")");break;
    			case 3:a[3][0]=(a[2][0]+a[3][0])/2;a[3][1]=(a[2][1]+a[3][1])/2;
    			System.out.println("当前P点的坐标值为"+"("+a[3][0]+","+a[3][1]+")");break;
    			}
    		}
    		
    	}
    }
    public void point(int startx, int starty, int endx, int endy){
    	a[i][0]=endx;
    	a[i][1]=endy;
    	System.out.println("当前坐标为"+"("+endx+","+endy+")");
    	i++;
    }
    public void mouseClicked(MouseEvent e) {}
    public void mouseEntered(MouseEvent e) {}
    public void mouseExited(MouseEvent e) {}
}

效果展示

在这里插入图片描述

发布了32 篇原创文章 · 获赞 25 · 访问量 4110

猜你喜欢

转载自blog.csdn.net/weixin_44143695/article/details/103264767
今日推荐