写在前面:

  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*ponyIE<winX;++i)
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*ponyIE<winY;++i)
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 }

附件:

*jar所在目录*\\icons\\

32.png

Java 窗口 绘制图形 #1的更多相关文章

  1. Java 窗口 绘制图形 #2

    写在前面: 高考结束咧,爽到啊,好耶 完善了Java 窗口 绘制图形 #1里面的程序 加入了缩放平移功能,给代码加了注释 1 package my_package; 2 3 import java.a ...

  2. Java 窗口 绘制图形 #3

    写在前面: 高数下学到第二章,突发奇想要写一个程序画二元函数图像 思路分了三层: ①抽象层: 因变量z,自变量x.y,坐标原点x0.y0.z0 ②投影实现层: 屏幕投影坐标px.py,x轴与屏幕水平方 ...

  3. C# 在窗口绘制图形(打点、画圆、画线)

    需要包含命名空间 using System.Drawing; 画图前需要先创建画板 void Display() { Graphics g = this.CreateGraphics(); //创建画 ...

  4. Java 在PPT中绘制图形

    Microsoft PowerPoint可支持在幻灯片中插入各种类型的图形并且可设置图形填充.线条颜色.图形大小.位置等.下面将通过Java编程来演示在PPT中绘制图形的方法. 工具:Free Spi ...

  5. Java 在PDF文档中绘制图形

    本篇文档将介绍通过Java编程在PDF文档中绘制图形的方法.包括绘制矩形.椭圆形.不规则多边形.线条.弧线.曲线.扇形等等.针对方法中提供的思路,也可以自行变换图形设计思路,如菱形.梯形或者组合图形等 ...

  6. Java之绘制方法

    绘制图形所用的函数类别分别为视图类.图形单元类和页面类. 对视图类,设置窗口的位置和大小: 对图形单元类,设置图形边界: 对页面类,只有当页面作为元件,该函数才起作用,设置元件边界. 一般构建窗口我们 ...

  7. python中的turtle库绘制图形

    1. 前奏: 在用turtle绘制图形时,需要安装对应python的解释器以及IDE,我安装的是pycharm,在安装完pycharm后,在pycharm安装相应库的模块,绘图可以引入turtle模块 ...

  8. 第58节:Java中的图形界面编程-GUI

    欢迎到我的简书查看我的文集 前言: GUI是图形用户界面,在Java中,图形用户界面我们用GUI表示,而GUI的完整英文为: Graphical User Interface(图形用户接口), 所谓图 ...

  9. Win32知识之窗口绘制.窗口第一讲

    Win32知识之窗口本质 一丶摘要 在学习Win32的时候. 很多操作都是窗口进行操作的.那么今天就说一下窗口的本质是什么. 窗口的本质是不断绘制.是windows通过消息机制进行绘制的. 我们知道. ...

随机推荐

  1. SpringBoot对静态资源的映射规则

    在WebMvcAutoConfiguration类中有相对应的方法addResourceHandlers public void addResourceHandlers(ResourceHandler ...

  2. 【Java】单例模式(Singleton)

    重新搞一波 复习巩固 简单记录 慕课网 Java工程师 文章目录 单例概述 设计模式 单例模式(Singleton) 参考资料 单例概述 Singleton Pattern 单例模式是Java中最简单 ...

  3. 【Linux】NFS搭建及使用详解

    环境:CentOS release 6.8 server  192.168.25.100 client1 192.168.25.101 client2 192.168.25.102 1.服务端操作 1 ...

  4. leetcode230. 二叉搜索树中第K小的元素

    题目链接: https://leetcode-cn.com/problems/kth-smallest-element-in-a-bst/ 题目: 给定一个二叉搜索树,编写一个函数 kthSmalle ...

  5. .NET 云原生架构师训练营(模块二 基础巩固 Scrum 团队)--学习笔记

    2.7.3 Scrum 团队 理想的环境 团队章程 如何组建 Scrum 团队 产品待办事项列表 用户故事 敏捷开发流程 理想的环境 5-9人 100% 跨职能 在一起 自组织 自组织 目标 授权 沟 ...

  6. C# 合并和拆分PDF文件

    一.合并和拆分PDF文件的方式 PDF文件使用了工业标准的压缩算法,易于传输与储存.它还是页独立的,一个PDF文件包含一个或多个"页",可以单独处理各页,特别适合多处理器系统的工作 ...

  7. Sgu149 Computer Network

    Sgu149 Computer Network 题目描述 给你一棵N(N<=10000)个节点的树,求每个点到其他点的最大距离. 不难想到一个节点到其他点的最大距离为:max(以它为根的子树的最 ...

  8. Javadoc命令与API

    Javadoc命令与API Javadoc工具会抽取类,成员,方法的文档注释生成与这个类配套的API帮助文档 Javadoc命令和文档注释小公司基本不用,但我们应养成良好的编码习惯,所以还是了解一下 ...

  9. xtrabakcup基本用法 安装、全量备份恢复、增量备份恢复

    xtrabackup备份原理以及工作流程 备份流程日志分析:1.##读取mysql配置文件2.## 扫描innodb日志lsn并复制inndodb系统表空间3.## 缓冲写出到数据文件并锁表4.## ...

  10. Spark SQL如何选择join策略

    前言 众所周知,Catalyst Optimizer是Spark SQL的核心,它主要负责将SQL语句转换成最终的物理执行计划,在一定程度上决定了SQL执行的性能. Catalyst在由Optimiz ...