热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Java窗口绘制图形#1

写在前面:editplus换成eclipse了Sketchpad要钱,买不起自己搞(rua)byemeralddarkness建立了一个平面直角坐标系

写在前面:

  editplus换成eclipse了

  Sketchpad要钱,买不起

  自己搞(rua)

by emeralddarkness

  建立了一个平面直角坐标系

  两个变元x,y,参数i

  实现了以下功能:

    调节窗口大小

    放缩单位长度

    改变原点位置

    改变参数方程

  离超过Sketchpad还有十万八千里路要走呃呃呃

 

  运行效果:

1     static double ponyX(double i){
2         return 4*Math.sin(i);
3     }
4     static double ponyY(double i){
5         return 6*Math.cos(i);
6     }

 

1     static double ponyX(double i){
2         return 4/Math.cos(i);
3     }
4     static double ponyY(double i){
5         return 6*Math.tan(i);
6     }

 

1     static double ponyX(double i){
2         return i;
3     }
4     static double ponyY(double i){
5         return i*i-i*4+2;
6     }

 

1     static double ponyX(double i){
2         return i;
3     }
4     static double ponyY(double i){
5         return i*4+5;
6     }

 

1     static double ponyX(double i){
2         return 4*Math.sin(i)+2;
3     }
4     static double ponyY(double i){
5         return 4*Math.cos(i)+3;
6     }

 

  还能画出来各种奇奇怪怪的图形,比如说胡子

 

代码如下:

 1 import java.awt.*;
 2 import java.awt.event.*;
 3 import java.awt.Graphics;
 4 import java.io.*; 
 5 import java.util.*;
 6 import javax.swing.ImageIcon;
 7 import javax.swing.JFrame;
 8 import javax.swing.JPanel;
 9 
10 public class PonysAlgorithm extends JFrame
11 {
12     static int winX=800,winY=600;
13     static int pOnyIE=30;
14     static int zeroX=winX/2,zeroY=winY/2;
15     static int pOnyPrecision=100;
16     
17     static double ponyX(double i){
18         return 4*Math.sin(i)+2;
19     }
20     static double ponyY(double i){
21         return 4*Math.cos(i)+3;
22     }
23     
24     public static void main(String[] args) throws Exception
25     {
26         JFrame pOnyFrame=new JFrame("Pony's Algorithm");
27         ponyFrame.setLayout(null);
28         JPanel pOnyJPanel=new JPanel(){
29             public void paint(Graphics g){
30                 super.paint(g);
31                 
32                 g.setColor(Color.GRAY);
33                 /*Coordinate Axis*/
34                 g.drawLine(zeroX, 0, zeroX, winY);
35                 g.drawLine(0, zeroY, winX, zeroY);
36                 
37                 for(int i=zeroX+ponyIE;i<=winX;i+=ponyIE)
38                     g.drawLine(i, zeroY-5, i, zeroY+5);
39                 for(int i=zeroX-ponyIE;i>0;i-=ponyIE)
40                     g.drawLine(i, zeroY-5, i, zeroY+5);
41                 for(int i=winY+ponyIE;i<=winY;i+=ponyIE)
42                     g.drawLine(zeroX-5, i, zeroX+5, i);
43                 for(int i=winY-ponyIE;i>0;i-=ponyIE)
44                     g.drawLine(zeroX-5, i, zeroX+5, i);
45                 
46                 for(int i=1;zeroX+i*ponyIEi)
47                     g.drawString(""+i, zeroX+i*ponyIE-4, zeroY+20);
48                 for(int i=-1;zeroX+i*ponyIE>0;--i)
49                     g.drawString(""+i, zeroX+i*ponyIE-4, zeroY+20);
50                 for(int i=1;zeroY+i*ponyIEi)
51                     g.drawString(""+(-i), zeroX-25, zeroY+i*ponyIE+4);
52                 for(int i=-1;zeroY+i*ponyIE>0;--i)
53                     g.drawString(""+(-i), zeroX-25, zeroY+i*ponyIE+4);
54                 
55                 g.setColor(Color.BLACK);
56                 /*CORE*/
57                 int tmpa,tmpb;
58                 for(int i=-10000;i<=10000;++i)
59                 {
60                     tmpa=(int)(ponyX(i/(double)ponyPrecision)*ponyIE)+zeroX;
61                     tmpb=(int)(-ponyY(i/(double)ponyPrecision)*ponyIE)+zeroY;
62                     g.drawLine(tmpa, tmpb, tmpa, tmpb);
63                 }
64             }
65         };
66         
67         /*Whole*/
68         ponyFrame.setSize(winX,winY);
69         ponyFrame.setResizable(false);
70         ponyFrame.setLocationRelativeTo(null);
71         ponyFrame.addWindowListener(new PonyWinAdapter());
72         
73         /*ICON*/
74         File directory = new File("");
75         ponyFrame.setIconImage(Toolkit.getDefaultToolkit().getImage(directory.getCanonicalPath()+"\\icons\\32.png"));
76         
77         /*DRAW*/
78         ponyJPanel.setBounds(2, 2, winX-10, winY-10);
79         ponyFrame.add(ponyJPanel);
80         
81         
82         ponyFrame.setVisible(true);
83         return;
84     }
85 }
86 
87 class PonyWinAdapter extends WindowAdapter
88 {
89     public void windowClosing(WindowEvent windowEvent){   
90         System.exit(0);
91         return;
92     }
93 }

 

附件:

 


推荐阅读
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • JavaSE笔试题-接口、抽象类、多态等问题解答
    本文解答了JavaSE笔试题中关于接口、抽象类、多态等问题。包括Math类的取整数方法、接口是否可继承、抽象类是否可实现接口、抽象类是否可继承具体类、抽象类中是否可以有静态main方法等问题。同时介绍了面向对象的特征,以及Java中实现多态的机制。 ... [详细]
  • 本文介绍了一种划分和计数油田地块的方法。根据给定的条件,通过遍历和DFS算法,将符合条件的地块标记为不符合条件的地块,并进行计数。同时,还介绍了如何判断点是否在给定范围内的方法。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
author-avatar
不铃不铃铃不铃铃铃
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有