用Java完成图形图像绘制

article/2025/9/21 15:41:22

我们要来图形图像的处理,目标就是滑动鼠标绘制一根直线,绘制一个矩形,绘制一个圆,并且绘制任意的一个三角形,和任意的一个等腰三角形

我们先创建一个DrawPad类,在这个类里面完成一些操作

步骤1、创建一个界面,并且流式化布局

public void initUI() {JFrame  jf = new JFrame();jf.setTitle("图形图像绘制");jf.setSize(800,600);jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 流式布局 FlowLayout fl = new FlowLayout();jf.setLayout(fl);

2、然后加入五个按钮,直线,矩形,圆,三角形,等腰三角形

JButton btnLine = new JButton("直线");
JButton btnRect = new JButton("矩形");
JButton btnOval = new JButton("圆");
JButton btnTragnle = new JButton("三角形");
JButton btn1 = new JButton("等腰三角形");

3、将这五个按钮加入到界面中,并且可视化

jf.add(btnLine);
jf.add(btnRect);
jf.add(btnOval);
jf.add(btnTragnle); 
jf.add(btn1);jf.setVisible(true);

4、我们要为窗体添加鼠标监听,按钮添加动作监听

创建一个DrawListener类,需要实施动作监听(ActionListener)和鼠标监听(MouseListener)

并且需要定义5个坐标,画直线,矩形,圆只需要两个,其次我们需要实现,任意点击3个坐标,就可以生成一个三角形

public class DrawListener implements ActionListener,MouseListener {int x1,y1,x2,y2,x3,y3,x4,y4,x5,y5;public Graphics g;String btnstr = "";

接下来,先写ActionListener的方法--actionperformed,在这个方法中,我们需要去获取按钮上的字段

 public void actionPerformed(ActionEvent e) {btnstr = e.getActionCommand();}

接下来,就需要写MouseListener的5个方法,分别是点击(mouseClicked),按下(mousePressed),释放(mouseReleased),进入(mouseEntered),离开(mouseExited)

1、点击,我们点击获取3个坐标,然后分别连成直线,这样就可以成为任意的三角形

                int count = 0;public void mouseClicked(MouseEvent e) {if(btnstr.equals("三角形")) {if(count == 0) {x3 = e.getX();y3 = e.getY();count++;}else if(count == 1) {                		                	x4 = e.getX();y4 = e.getY();g.drawLine(x3, y3, x4, y4);count++;}else if(count ==2) {x5 = e.getX();y5 = e.getY();g.drawLine(x3,y3,x5,y5);g.drawLine(x5,y5,x4,y4);count = 0;}}}

2、按下,我需要按下的时候获取一组坐标,在释放的时候再获取一组坐标,这样就可以直接或者矩形了

 public void mousePressed(MouseEvent e) {x1 = e.getX();y1 = e.getY();System.out.println("btnstr="+btnstr);}

3、释放,获取另一组坐标,并且利用Graphics画出来

public void mouseReleased(MouseEvent e) {x2 = e.getX();y2 = e.getY();if(btnstr.equals("直线")){g.drawLine(x1,y1,x2,y2);}else if(btnstr.equals("矩形")) {g.drawRect(Math.min(x1, x2),Math.min(y1,y2),Math.abs(x2-x1),Math.abs(y2-y1));                		}else if(btnstr.equals("圆")) {g.drawOval(Math.min(x1, x2),Math.min(y1,y2),Math.abs(x2-x1),Math.abs(y2-y1));}else if(btnstr.equals("等腰三角形")){drawTrangle(x1,y1,x2,y2);}}

4、进去或者离开,我们没有操作

 public void mouseEntered(MouseEvent e) {}public void mouseExited(MouseEvent e) {}

接下来,我们就需要来定义在3中 的drawTrangle的方法名了,这个是用来画等腰三角形的

画等腰三角形也只需要两组坐标,x1,y1,x2,y2,顶点的x坐标就是tempx = (x1+x2)/2

 public void drawTrangle(int x1,int y1,int x2,int y2) {int tempx = (x1+x2)/2;g.drawLine(x1, y2, x2, y2);g.drawLine(tempx, y1, x1, y2);g.drawLine(tempx, y1, x2, y2);}

接下来,我们就需要回到DrawUI中,为按钮添加动作监听,为界面添加鼠标监听

DrawListener dl = new DrawListener();
btnLine.addActionListener(dl);
btnRect.addActionListener(dl);
btnOval.addActionListener(dl);
btnTragnle.addActionListener(dl);
btn1.addActionListener(dl);
jf.addMouseListener(dl);dl.g = jf.getGraphics();
System.out.println("画笔:"+dl.g);

最后就是定义一个主方法,创建一个属于DrawUI的对象,调用一下initUI这个方法

 public static void main(String[] args) {DrawsPad dp = new DrawsPad();dp.ininUI();}

接下来就是效果展示图

 


http://chatgpt.dhexx.cn/article/uZ4684UQ.shtml

相关文章

图形图像学习随笔:计算机图形学的一些基本概念

本文内容摘抄于:《计算机图形学的概念》 一、计算机图形学的范畴 1、图形主要分为两类,一类是基于线条信息表示的,如工程图、等高线地形图、曲面的线框图等;另一类是明暗图,也就是通常所说的真实感图形; …

升级计算机的图形卡和驱动程序,驱动程序向导如何更新图形卡驱动程序?更新图形驱动程序方法说明...

有许多用户使用驱动程序向导,并且一些新用户不清楚更新图形驱动程序的教程. 今天,我将带给您有关更新图形驱动程序的教程. 希望它能对您有所帮助. 我们首先打开计算机上已安装的驱动程序向导软件,然后进入软件,然后单击页面“立即…

大数据学习内容有哪些?大数据学习路线图

很多人想学习大数据,但是都不清楚大数据学习应该怎么下手。大数据开发工程师简单整理了一下大数据学习路线图,希望对于学习大数据的朋友,有一定的帮助。 总的来说,如果是从零基础开始学习,总共分为八个阶段 第一阶段:HTML+css 第二阶段:JAVASE学习 第三阶段:javaweb …

(转载)大数据学习路线大数据学习路线

一、背景介绍 本人目前是一名大数据工程师,项目数据50T,日均数据增长20G左右,个人是从Java后端开发,经过3个月的业余自学成功转型大数据工程师。 二、大数据介绍 大数据本质也是数据,但是又有了新的特征&#xff0c…

2022最全大数据学习路线(建议收藏)

【不要错过文末彩蛋】 申明: 本文旨在为【大数据自学者|大数据专业学生|工资低的程序员(Java/Python等)】提供一个从入门到入职的的大数据技术学习路径,不适合5年以上大数据工程师的进阶学习。 前言: 一、个人介绍 …

大数据学习的必要性,让你走向时代前沿!

大数据及人工智能可谓是目前最热门的行业,从走在前沿的科技公司,到努力创新的传统行业,几乎都想把握这个新“风口”。一部分学校也走上了大数据的道路。 在这里还是要推荐下我自己建的大数据学习交流群:199427210,群里都是学大数据开发的,如果你正在学习高大上大数据 ,小…

2022年Python+大数据学习路线图,源码笔记,最优学习资源

任何学习过程都需要一个科学合理的学习路线,才能够有条不紊的完成我们的学习目标。Python大数据所需学习的内容纷繁复杂,难度较大,所以今天特别为大家整理了一个全面的Python大数据学习路线图,帮大家理清思路,攻破难关…

大数据学习路线图(2023完整版)适合收藏

大数据开发是一门涉及处理和分析大规模数据的技术领域,随着大数据技术的不断发展和应用,对大数据开发人员的需求也在逐渐增加。就业前景相对较好,尤其在科技行业和数据驱动型企业中。大数据开发的前景还是有很多优势的,就业范围广…

大数据学习完可以做什么

如果要推荐一种人人都能掌握的编程语言,应该没有比Python更合适的了。如果想学习大数据,可以选择从python语言入手~ Python 简单易学,用途广泛,不仅可以在日常办公中提高大家的职场效率,还能被大型互联网企业应用于后…

大数据学什么

经常有初学者在博客和QQ问我,自己想往大数据方向发展,该学哪些技术,学习路线是什么样的,觉得大数据很火,就业很好,薪资很高。如果自己很迷茫,为了这些原因想往大数据方向发展,也可以…

学习大数据需要具备什么基础么?

Python优势明显,应用领域超多 如果要推荐一种人人都能掌握的编程语言,应该没有比Python更合适的了。 Python 简单易学,用途广泛,适合零基础入门,在编程语言排名上升最快,能完成数据挖掘、机器学习、实时计…

大数据需要学什么?

注意本文非广告,阅读时间四分钟左右,适合大数据入门级读者阅读 大数据需要学习什么?很多人问过我这个问题。每一次回答完都觉得自己讲得太片面了,总是没有一个合适的契机去好好总结这些内容,直到开始写这篇东西。大数据…

学习大数据开发要掌握哪些技术呢?

转自:微点阅读 https://www.weidianyuedu.com 当学生问到如何学习大数据技术,每次口头介绍都心中清楚无法清晰讲清楚这些技术名词,简单整理给大家。 大数据开发的工具与语言:编程语言(Java,python&#x…

大数据需要学习哪些内容?

大数据技术的体系庞大且复杂,每年都会涌现出大量新的技术,目前大数据行业所涉及到的核心技术主要就是:数据采集、数据存储、数据清洗、数据查询分析和数据可视化。 Python 已成利器 在大数据领域中大放异彩 Python,成为职场人追求…

如何学习大数据!!我要做大数据!

一文读懂大数据平台——写给大数据开发初学者的话! 文|miao君 导读: 第一章:初识Hadoop 第二章:更高效的WordCount 第三章:把别处的数据搞到Hadoop上 第四章:把Hadoop上的数据搞到别处去 第五章:快一…

什么是大数据?如何入门学习大数据?

什么是大数据?在互联网技术快速发展的今天,大量日常生活和经营活动中产生的数据都已经信息化。我们产生的数据量相比以前有了爆炸式的增长,传统的数据处理技术已经无法胜任,需求催生技术,一套用来处理海量数据的软件工…

大数据主要有什么用,入行大数据,需要学哪个专业?

大数据有什么用 了解用户特征 通过大数据,百度掌握你的隐私,微信知道你的社交圈子,淘宝了解你的购物习惯,移动电信联通三大运营商存有你的通话记录和上网记录…… 给企业和商业带来巨大价值 网络浏览历史记录以及使用的应用等…

大数据分析要学什么

很多初入大数据领域或者转行进入大数据领域的朋友,需要了解的第一件事不是说各种组件框架生态相关的东西,也不是各种编程语言基础。 而是,了解清楚以下几个问题: 1)大数据领域到底包含了哪些东西,解决了哪些问题? 2)自…

大数据专业学什么?学完可以干什么?

大数据领域三个大的技术方向,这些不同的技术方向,对应企业的哪些招聘岗位? Hadoop大数据开发方向 市场需求旺盛,大数据培训的主体,我们培训的重点 对应岗位:大数据开发工程师 爬虫工程师 数据分析师 等 数…