一门语言只要带图形库就可以编程画图了,用JAVA画图有两种方式,一是在内存中画好然后生成图片,就可以看到画图的效果了。另一个就是在窗口界面上直接画,可以实时看到程序的运行效果。刚开始学编程的时候,我加入了一个JAVA编程的BBS,里边有些大神会带着新手学,有一次大神出一道,叫让画一个6边型。

我想这不是很难吧,JAVA的图形库比较容易,有一个Graphics类,这个类在applet或者swing的某些方法中可以得到,Graphics提供画线画点画多边形的一些方法。不过当时我没啥经验,因为没有网络,没有去查完整的Api文档,我学的东西主要来源于书本,我只知道有个画线的方法,于是就通过中学的几何知识,分别计算了6个点的位置,再用线将这个6个点连起来,于是一个6边形就画出来了。

不过,我写的程序被大神批了一通,说我这程序写得不行。第一个我用的applet,没有用swing库,可能是信息闭塞,当时我也知道有swing这玩意,只是当时的IDE太笨重,我没法安装一个jbuilder去创建UI,手写又觉得太麻烦,不像applet只要少量的代码插入到浏览器即可运行。只是applet基于awt库的,样式相较Swing的扁平效果,确实丑了一点。但我觉得,用swing还是awt,目标不是画多边形么,为什么这个成为喷点了。

另一个就是我没有用drawPolygon(int[] xPoints, int[] yPoints, int nPoints)​这个方法,大神觉得我自己去画6条线,是多此一举,他觉得如果可以动态调整顶点数,我这程序就不行了。这一点我认了,确实是自己不知道这个方法,多写了几行代码,但实际上,顶点还是算出来的,我只是多了几行画线的代码,如果之前的需求有提出来,我弄个链表存储顶点,然后通过迭代把线画出来也不是多么困难的事情。

还有一点,就是我的程序仅仅画了一个图。我想应该是这个大神有点完美主义,只是画一个图,但他想要的却是一个完整可发布的应用程序,比如某兄弟,写了个6边形的程序,他上边加了几个控件,可以调节顶点数,半径长度,自适应窗口宽度等等。没办法,我学的程序基本上都是Console下边运行的,参加这个活动,我只是为了证明一下,这种基于UI的程序,我也是可以写的,但人家不认你也没办法。

后来,我一直工作到现在,也没开发过JAVA写的UI程序,如果是窗口程序,用响应更快的本地代码编写不是更好,反正Windows下边,最终都是调用GDI的接口。如果不想用C++,可以用Delphi,VB之类更简单的编程语言来实现。在我学JAVA的时候,.net 也刚刚出来。由于Windows比较普及,我也就以.net开发为主了。winform满足了开发窗口程序的大部分需求。所以用JAVA开发就比较小众了。当然也可能是见识的问题,以前的嵌入设备很多都是用JAVA的,不过那是JSME了,不是咱学习的范畴。

【编程漫谈】用JAVA画多边形的更多相关文章

  1. 使用Java、Matlab画多边形闭合折线图

    由于写论文要将“哈密顿回路问题(TSP)”的求解中间结果表示出来,查了一下使用程序画多边形图形.现在在总结一下,这个图是“由给定节点首尾相连的”闭合多边形. 1.使用matlab作闭合多边形图 没有找 ...

  2. 这个中秋,我用 Java 画了一个月饼!

    栈长代表微信公众号 "Java技术栈" 祝所有粉丝中秋佳节快乐! 为了用一种特殊的方式表达我的心意,去年中秋节,我写了这篇文章: 为了写中秋这篇文章,我学了 20 种编程语言! 没 ...

  3. 三、Android NDK编程预备之Java jni入门创建C/C++共享库

    转自: http://www.eoeandroid.com/thread-264971-1-1.html 应网友回复,答应在两天前要出一篇创建C/C++共享库的,但由于清明节假期,跟朋友出去游玩,丢手 ...

  4. 二、Android NDK编程预备之Java jni入门Hello World

    转自:  http://www.eoeandroid.com/forum.php?mod=viewthread&tid=264543&fromuid=588695 昨天已经简要介绍了J ...

  5. 一、Android NDK编程预备之Java jni简介

    转自:  http://www.eoeandroid.com/thread-264384-1-1.html 游戏开发 视频教程 博客 淘帖     论坛›eoe·Android应用开发区›Androi ...

  6. 很值得学习的java 画图板源码

    很值得学习的java 画图板源码下载地址:http://download.csdn.net/source/2371150 package minidrawpad; import java.awt.*; ...

  7. .net 4.0 面向对象编程漫谈基础篇读书笔记

    话说笔者接触.net 已有些年头,做过的项目也有不少,有几百万的,也有几十万的,有C/S的,也有B/S的.感觉几年下来,用过的框架不少,但是.net的精髓一直没有掌握.就像学武之人懂得各种招式,但内功 ...

  8. 结对编程--四则运算(Java)萧英杰 夏浚杰

    结对编程--四则运算(Java)萧英杰 夏浚杰 Github项目地址 功能要求 题目:实现一个自动生成小学四则运算题目的命令行程序 使用 -n 参数控制生成题目的个数(实现) 使用 -r 参数控制题目 ...

  9. 结对编程--四则运算(Java)梅进鹏 欧思良

    结对编程--四则运算(Java)梅进鹏 欧思良 Github项目地址:https://github.com/MeiJinpen/Arithmetic 功能要求 题目:实现一个自动生成小学四则运算题目的 ...

随机推荐

  1. [微信小程序]聊天对话(文本,图片)的功能(完整代码附效果图)

    废话不多说, 先上图: <!--pages/index/to_news/to_news.wxml--> <view class='tab'> <view class='l ...

  2. python函数:函数阶段练习

    1.写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成批了修改的操作def modify_file(filename,old,new): import os with open(filena ...

  3. Linux:INIT runlevel service netstat ps top pgrep kill killall jobs pkill crontab

    INIT进程 Linux内核加载执行/sbin/init程序 -Linux的第一个进程,进程ID为1 -主配置文件:/etc/ininttab init 0 关机 init 1 单用户模式 init ...

  4. MYSQL获得查询记录的行号

    对于获得查询记录的行号这一功能,Oracle 中可以使用标准方法(8i版本以上),也可以使用非标准的ROWNUM,MS SQL Server 则在 2005 版本中提供了ROW_NUMBER()函数. ...

  5. elk快速入门-在kibana中如何使用devtools操作elasticsearch

    在kibana中如何使用devtools操作elasticsearch:前言: 首先需要安装elasticsearch,kibana ,下载地址 https://www.elastic.co/cn/d ...

  6. MySQL中主键的选择与磁盘性能

    偶然看到了“Fotolog: Scaling the World\'s Largest Photo Blogging Community”,才发现很多数据库的优化其实道理都很简单,至高境界是当你面对问 ...

  7. webpack 配置文件说明

    var path = require("path"); var webpack = require("webpack"); var HtmlwebpackPlu ...

  8. 【agc002d】Stamp Rally

    题目大意 无向图中,每次询问从x和y分别出发,一共经过z个点,使需要走过编号最大的边最小. 解题思路 对于暴力,我们对于每个询问二分答案ans,将1~ans的边加入,用并查集维护,如果x和y在同一个并 ...

  9. Python之hashlib模块的使用

    hashlib模块主要的作用: 加密保护消息安全,常用的加密算法如MD5,SHA1等. 1.查看可用的算法有哪些 #!/usr/bin/env python # -*- coding: utf-8 - ...

  10. Qbxt 模拟题 day3(am) T3 选数字 (select)(贪心)

    选数字 (select Time Limit:3000ms Memory Limit:64MB 题目描述 LYK 找到了一个 n*m 的矩阵,这个矩阵上都填有一些数字,对于第 i 行第 j 列的位置上 ...