惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Latest news
Latest news
T
Troy Hunt's Blog
V
Vulnerabilities – Threatpost
L
LINUX DO - 热门话题
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Simon Willison's Weblog
Simon Willison's Weblog
V
V2EX
博客园 - 司徒正美
B
Blog RSS Feed
AWS News Blog
AWS News Blog
MyScale Blog
MyScale Blog
Scott Helme
Scott Helme
Cisco Talos Blog
Cisco Talos Blog
Last Week in AI
Last Week in AI
NISL@THU
NISL@THU
博客园 - Franky
P
Proofpoint News Feed
博客园_首页
C
CERT Recently Published Vulnerability Notes
雷峰网
雷峰网
S
Schneier on Security
P
Proofpoint News Feed
Hugging Face - Blog
Hugging Face - Blog
G
GRAHAM CLULEY
博客园 - 三生石上(FineUI控件)
月光博客
月光博客
WordPress大学
WordPress大学
The Hacker News
The Hacker News
T
Threatpost
阮一峰的网络日志
阮一峰的网络日志
A
Arctic Wolf
Microsoft Azure Blog
Microsoft Azure Blog
T
The Exploit Database - CXSecurity.com
Engineering at Meta
Engineering at Meta
罗磊的独立博客
T
The Blog of Author Tim Ferriss
D
Darknet – Hacking Tools, Hacker News & Cyber Security
I
Intezer
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
K
Kaspersky official blog
SecWiki News
SecWiki News
云风的 BLOG
云风的 BLOG
美团技术团队
C
Cybersecurity and Infrastructure Security Agency CISA
博客园 - 【当耐特】
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Security Latest
Security Latest
C
Cyber Attacks, Cyber Crime and Cyber Security
B
Blog
S
Security Affairs

博客园 - 八爻老骥

Gradle模块化项目中使用了非模块化库的编译方法 系统架构一一前端技术 系统架构一一ORM的应用 WPF下的RibbonApplicationMenu控件自定义 系统架构——多线程的应用 系统架构——前后端分离 为什么要学DirectX? D3D实战-在窗口中画一个三角形 - 八爻老骥 - 博客园 DirectX 入门1-初识DirectX Tool Kit DirectX 12 版 俄罗斯方块 WPF俄罗斯方块改进版 - 八爻老骥 - 博客园 【编程漫谈】单机与联机 往Angular应用程序中添加DevExtreme 【编程漫谈】程序的运行环境 创建DevExtreme应用程序 【编程漫谈】程序的运行流程 【编程漫谈】程序的进入与退出 【编程漫谈】Hello world! WPF实战俄罗斯方块
【编程漫谈】用JAVA画多边形
八爻老骥 · 2019-10-07 · via 博客园 - 八爻老骥

一门语言只要带图形库就可以编程画图了,用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了,不是咱学习的范畴。