写在前面:

  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. 支持向量机(SVM)原理详解

    SVM简介 支持向量机(support vector machines, SVM)是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机:SVM还包括核技巧, ...

  2. 如何实现CentOS服务器的扩容??

    Linux的硬盘识别: 一般使用"fdisk -l"命令可以列出系统中当前连接的硬盘 设备和分区信息.新硬盘没有分区信息,则只显示硬盘大小信息. 1.关闭服务器加上新硬盘 2.启动 ...

  3. mysql的安全问题

    mysql 用户目录下,除了数据文件目录,其他文件和目录属主都改为root 删除空账号 drop user ''@'localhost'; 给root 设置口令 在[client]中写入user='' ...

  4. 优先队列priority_queue排序

    优先队列默认大顶堆,即堆顶元素是最大值 改成小顶堆时: priority_queue<int,vector<int>, greater<int> > Q;//注意最 ...

  5. EFCore 5 新特性 —— Savepoints

    EFCore 5 中的 Savepoints Intro EFCore 5中引入了一个新特性,叫做 Savepoints,主要是事务中使用,个人感觉有点类似于 Windows 上的系统还原点,如果事务 ...

  6. django ajax应用

    ajax: 什么是ajax,有什么作用: 以前我们在页面向后台提交数据的时候都是使用from表单,这样的提交会在提交的时候将整个页面全部刷新,如果你在填写表单的时候提交之后发现某个数据不对,但是你已提 ...

  7. windows和linux修改ipv6和ipv4的优先级

    如果一台机器系统配置ipv6地址和ipv4地址共存,访问两种网站都可以 但有个很尴尬的问题,因为操作系统默认是V6优先于V4,所以比如一个地址同时有A和AAAA记录的话,那么系统会自动选择V6协议通信 ...

  8. 基于Vue的npm组件库

    前言(*❦ω❦) 思维导图可能有点高糊,有点太大了,项目和导图文件放到github或giteee上,这个思维导图也是我文章的架构,思维导图是用FeHelper插件生成的,这个是一款开源chrome插件 ...

  9. 接口新建学习---HTTP请求默认值

    一.HTTP请求默认值 1.使用场景: 每次访问论坛的地址(服务器名称或IP)是不变的,端口也是不变的,协议也是不变的(http协议),测试的时候需要每个请求都要写一遍,在我们的HTTP请求取样器数量 ...

  10. 抽取一部分服务端做BFF(Backend For Frontend服务于前端的后端)

    Flutter+Serverless端到端研发架构实践 · 语雀 https://www.yuque.com/xytech/flutter/kdk9xc 2019-12-19 13:14 作者:闲鱼技 ...