Java学习 之 画图板 立方体

  • 步骤
  • 画小立方体
  • 画3 *3 *3的立方体
  • 递归画出更大的立方体

步骤

1、先画一个小立方体,三个面填充不一样的颜色
2、再由小立方体搭成一个3 * 3 * 3的立方体

3、以上图立方体为最小单位,递归画出更大的立方体

画小立方体

先填充三面颜色,用Polygon类,再画边线。

public class ShapeLFT {public void drawLFT(Graphics g,int x,int y){//画立方体的类g.setColor(new Color(100,255,100));g.fillRect(x, y, 30,30);//正面填充颜色//顶Polygon pon1=new Polygon();//四个顶点连成面pon1.addPoint(x, y);pon1.addPoint(x+15, y-15);pon1.addPoint(x+30+15, y-15);pon1.addPoint(x+30, y);g.setColor(new Color(188,255,166));g.fillPolygon(pon1);//填充//右侧面Polygon pon2=new Polygon();pon2.addPoint(x+30, y);pon2.addPoint(x+30+15, y-15);pon2.addPoint(x+30+15, y+30-15);pon2.addPoint(x+30, y+30);g.setColor(new Color(150,255,133));g.fillPolygon(pon2);//画边框g.setColor(new Color(60,255,20));//顶g.drawLine(x, y, x+15, y-15);//左上g.drawLine(x+30, y, x+30+15, y-15);//右上g.drawLine(x+15, y-15, x+30+15, y-15);//上//右侧面g.drawLine(x+30, y+30, x+30+15, y+30-15);//下g.drawLine(x+30+15, y-15, x+30+15, y+30-15);//右//正面g.drawLine(x, y, x+30, y);//g.drawLine(x+30, y, x+30, y+30);g.drawLine(x+30, y+30, x, y+30);g.drawLine(x, y+30, x, y);}

画3 *3 *3的立方体

根据一个小立方体的顶点坐标,推算其他小立方体的左上角的点的坐标,调用画小立方体的函数画出三层的立方体

public void drawShapeOne(Graphics g,int x,int y){//第一层drawLFT(g,x+15+15,y-15-15);//后左drawLFT(g,x+15+15+30,y-15-15);//后中drawLFT(g,x+15+15+30+30,y-15-15);//后右drawLFT(g,x+15,y-15);//中左drawLFT(g,x+30+30+15,y-15);//中右drawLFT(g,x,y);//前左drawLFT(g,x+30,y);//前中drawLFT(g,x+30+30,y);//前右//第二层drawLFT(g,x+15+15,y-15-15-30);//后左drawLFT(g,x+15+15+30+30,y-15-15-30);//后右drawLFT(g,x,y-30);//前左drawLFT(g,x+30+30,y-30);//前右//第三层drawLFT(g,x+15+15,y-15-15-60);//后左drawLFT(g,x+15+15+30,y-15-15-60);//后中drawLFT(g,x+15+15+30+30,y-15-15-60);//后右drawLFT(g,x+15,y-15-60);//中左drawLFT(g,x+30+30+15,y-15-60);//中右drawLFT(g,x,y-60);//前左drawLFT(g,x+30,y-60);//前中drawLFT(g,x+30+30,y-60);//前右}

递归画出更大的立方体

递归到最小的部分3 * 3 * 3立方体就画出来,否则就将大的分成小的来画
立方体左上角的坐标是画立方体传递的参数,要根据当前立方体的边长来算坐标

public void draw(Graphics g,int x,int y,int k){//k为立方体的边的长度,最小的立方体边长设为30if(k==90){//递归到3*3*3的立方体,调用函数画出drawShapeOne(g,x,y);return;}else{k=k/3;//先画小的立方体,小的边长是大的边长除以3//递归调用画出小的立方体//第一层draw(g,x+k,y-k,k);//后左draw(g,x+k+k,y-k,k);//后中draw(g,x+k+k*2,y-k,k);//后右draw(g,x+k/2,y-k/2,k);//中左draw(g,x+k+k+k/2,y-k/2,k);//中右draw(g,x,y,k);//前左draw(g,x+k,y,k);//前中draw(g,x+k*2,y,k);//前右//第二层draw(g,x+k,y-k-k,k);//后左draw(g,x+k+k*2,y-k-k,k);//后右draw(g,x,y-k,k);//前左draw(g,x+k*2,y-k,k);//前右//第三层draw(g,x+k,y-k-k*2,k);//后左draw(g,x+k+k,y-k-k*2,k);//后中draw(g,x+k+k*2,y-k-k*2,k);//后右draw(g,x+k/2,y-k/2-k*2,k);//中左draw(g,x+k*2+k/2,y-k/2-k*2,k);//中右draw(g,x,y-k*2,k);//前左draw(g,x+k,y-k*2,k);//前中draw(g,x+k*2,y-k*2,k);//前右}

Java学习 之 画图板 立方体相关推荐

  1. Java编写的画图板,功能非常齐全,完整代码 附详细设计报告

    今天为大家分享一个java语言编写的图书管理程序-003,目前系统功能已经很全面,后续会进一步完善.整个系统界面漂亮,有完整得源码,希望大家可以喜欢.喜欢的帮忙点赞和关注.一起编程.一起进步 开发环境 ...

  2. java,制作简易画图板

    简易画图板 前些日子,我学习了关于xp系统简易画图板的制作,虽然我写的画图板功能不多,但这是我接触java以来完成的第一个项目,制作的时候感觉很艰难,有的时候明明知道思路,却因为不知道具体的方法而走了 ...

  3. java有画图的库吗,Java基础之画图板

    这是我刚开始学习Java的另一个实例,先上图.. 首先也是先从界面开始,第一就是主要面板,就是一个JFrame,前面的按钮是JRadioButton,然后还有一个 JComboBox下拉列表 publ ...

  4. Java版简易画图板的实现

    Windows的画图板相信很多人都用过,这次我们就来讲讲Java版本的简易画板的实现. 基本的思路是这样的:画板实现大致分三部分:一是画板界面的实现,二是画板的监听以及画图的实现,三是画板的重绘.(文 ...

  5. Java项目之画图板(一)

    画图板(一) 此画图板为第一个版本的画图板,下一个版本将会说明这个版本的缺点和不足,下一个版本为画图板(二) 1.步骤 第一步. 创建一个窗体(布局设为BorderLayout) 第二步. 布局左边( ...

  6. Java制作简易画图板

    简易画图板 基本思路 运行效果 基本思路 画图板需要满足的功能有: 画线,画三角形,画矩形,画多边形,画曲线 设置不同颜色的画笔 改变窗口大小或最小化窗口后重新打开时图案不消失 画图方法的编写: 创建 ...

  7. Java学习简单画椭圆

    import java.awt.*; import javax.swing.*;/*** 画椭圆*/ public class AppGraphInOut extends JFrame{//定义界面p ...

  8. Java 搭建高级画图板

    1.首先介绍高级画板的效果和功能 1.1实现的功能: 文件:新建画板:导入图片:关闭当前画板:保存画板:另存为:重启画板:退出画板: 编辑:清空画板:选择功能: 颜色:共计13种颜色: 线条:共计7种 ...

  9. java绘图板_Java中的画图板简单功能实现

    首先画图板就是用到了我们之前所学的知识,并不是很难,如果要构建一些复杂的功能,还需进一步学习.画图板所需要的API: JFrame //窗体 : JPanel //面板 :JButton //按钮 A ...

最新文章

  1. 并发编程--线程池与进程池
  2. 软件测试工作常用linux命令,软件测试工程师工作中常用的Linux命令
  3. 当identity_insert 设置为off时不能为表_硬盘跳线怎么设置 硬盘跳线设置方法【详解】...
  4. BZOJ4818 [SDOI2017] 序列计数 【矩阵快速幂】
  5. 投影元素直接隔离_Angular ngcontent 内容投影
  6. MongoDB 去重(distinct)查询后求总数(count)
  7. python实现一个简单的项目_Python小项目四:实现简单的web服务器
  8. 【Vue2.0】— 消息订阅与发布pubsub(二十)
  9. 超级计算机运行吃鸡,决赛圈的时候,如果两个人同时被手雷炸死该怎么办呢?...
  10. 索引和数据完整性约束的总结
  11. 漫谈 Clustering (4): Spectral Clustering
  12. hibernate java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z
  13. 学习笔记-Matlab算法篇-动态规划
  14. 如何用c#语言构造蜘蛛程序(网络爬虫实现),如何构造一个C#语言的爬虫蜘蛛程序1.doc...
  15. Ansys 2021中英文切换、背景切换
  16. 必修三计算机选修三知识点总结,高中生物必修一、必修二、必修三、选修三知识点总结(人教版).pdf...
  17. 软件测试工程师未来十年的职业规划
  18. 谷哥学术2022年2月资源分享下载列表 08/20
  19. 《数据结构学习笔记》-持续记录
  20. python三个箭头怎么打出来_(Python3)Linux和Windows箭头键按下

热门文章

  1. (下)开发一款微信小程序的个性简历,能打开大厂之门并获得门票?(附源码)
  2. ggalluvial | 冲击图/ 桑基图绘制
  3. python 查找二维数组长度_Python二维数组中的查找
  4. LaTex练习日记02 —— 字体设置
  5. OpenMAX编程-音视频等组件介绍
  6. 从图(Graph)到图卷积(Graph Convolution):漫谈图神经网络模型 (二)
  7. A Comprehensive Survey on Graph Neural Networks--图神经网络综合研究
  8. eclipes使用方法
  9. 军队文职(数学2+物理)——高等数学 1、函数
  10. 论文笔记01——PoseCNN:A Convolutional Neural Network for 6D Object Pose Estimation in Cluttered Scenes