本例主要是通过使用坐标轴平移,图形旋转和获得随机数等技术来绘制艺术图案。通过重写JPanel类中的paint()方法,并在该方法中使用Graphics2D类中的translate(),setColor(),ratate()和draw()方法来实现的。具体代码如下:

1. 创建一个ArtDesignPanel类,继承JPanel类,来进行图形的绘制

  1. package com.example.artdesign.ui;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Graphics;
  5. import java.awt.Graphics2D;
  6. import java.awt.geom.Ellipse2D;
  7. import java.util.Random;
  8.  
  9. import javax.swing.JPanel;
  10.  
  11. /***
  12. * 创建内部面板类
  13. * @author lenovo'
  14. *
  15. */
  16. public class ArtDesignPanel extends JPanel{
  17.  
  18. @Override
  19. public void paint(Graphics g) { //重写paint方法
  20. // TODO Auto-generated method stub
  21. Graphics2D g2 = (Graphics2D)g; //获得Graphics2D对象
  22. Ellipse2D.Float ellipse = new Ellipse2D.Float(-80, 5, 160, 10); //创建椭圆对象
  23. g2.translate(160, 90); //平移坐标轴
  24.  
  25. Random random = new Random(); //获得随机数
  26. int R = random.nextInt(256); //随机产生颜色的R值
  27. int G = random.nextInt(256); //随机产生颜色的G值
  28. int B = random.nextInt(256); //随机产生颜色的B值
  29.  
  30. Color color = new Color(R,G,B); //创建颜色对象
  31. g2.setColor(color); //指定颜色
  32. g2.draw(ellipse); //绘制椭圆
  33.  
  34. int i = 0;
  35. while (i < 100) {
  36.  
  37. R = random.nextInt(256); //随机产生颜色的R值
  38. G = random.nextInt(256); //随机产生颜色的G值
  39. B = random.nextInt(256); //随机产生颜色的B值
  40.  
  41. color = new Color(R,G,B);
  42.  
  43. g2.setColor(color);
  44. g2.rotate(10); //旋转画布
  45. g2.draw(ellipse); //绘制椭圆
  46.  
  47. i++;
  48. }
  49.  
  50. }
  51. }

ArtDesignPanel

2. 创建一个ArtDesignFrame类,继承JFrame类,来加载ArtDesignPanel窗体。

  1. package com.example.artdesign.ui;
  2.  
  3. import java.awt.Dimension;
  4. import java.awt.event.WindowEvent;
  5. import java.awt.event.WindowListener;
  6.  
  7. import javax.swing.JFrame;
  8.  
  9. public class ArtDesignFrame extends JFrame{
  10.  
  11. /**
  12. *
  13. */
  14. private static final long serialVersionUID = -1760723807752896879L;
  15.  
  16. public ArtDesignFrame() {
  17. // TODO Auto-generated constructor stub
  18. this.add(new ArtDesignPanel());
  19. this.addWindowListener(new WindowListener() {
  20.  
  21. @Override
  22. public void windowOpened(WindowEvent arg0) {
  23. // TODO Auto-generated method stub
  24.  
  25. }
  26.  
  27. @Override
  28. public void windowIconified(WindowEvent arg0) {
  29. // TODO Auto-generated method stub
  30.  
  31. }
  32.  
  33. @Override
  34. public void windowDeiconified(WindowEvent arg0) {
  35. // TODO Auto-generated method stub
  36.  
  37. }
  38.  
  39. @Override
  40. public void windowDeactivated(WindowEvent arg0) {
  41. // TODO Auto-generated method stub
  42.  
  43. }
  44.  
  45. @Override
  46. public void windowClosing(WindowEvent arg0) {
  47. // TODO Auto-generated method stub
  48.  
  49. }
  50.  
  51. @Override
  52. public void windowClosed(WindowEvent arg0) {
  53. // TODO Auto-generated method stub
  54. System.exit(0);
  55. }
  56.  
  57. @Override
  58. public void windowActivated(WindowEvent arg0) {
  59. // TODO Auto-generated method stub
  60.  
  61. }
  62. });
  63. this.setVisible(true);
  64.  
  65. }
  66.  
  67. public static void main(String[] args) {
  68. ArtDesignFrame frame = new ArtDesignFrame();
  69. frame.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
  70. frame.setSize(360, 360);
  71. }
  72.  
  73. }

ArtDesignFrame

运行截图如下:

文本摘自:《JAVA开发实例1200例》---王家林。

Java绘制艺术图形的更多相关文章

  1. Java之绘制艺术图案

    前面已经介绍过绘制方法.这里不再赘述. package com.caiduping; import java.awt.Color; import java.awt.Graphics; import j ...

  2. Java入门:绘制简单图形

    在上一节,我们学习了如何使用swing和awt工具创建一个空的窗口,本节学习如何绘制简单图形. 基本绘图介绍 Java中绘制基本图形,可以使用Java类库中的Graphics类,此类位于java.aw ...

  3. Java生成艺术二维码也可以很简单

    原文点击: Quick-Media Java生成艺术二维码也可以很简单 现在二维码可以说非常常见了,当然我们见得多的一般是白底黑块,有的再中间加一个 logo,或者将二维码嵌在一张特定的背景中(比如微 ...

  4. css绘制特殊图形,meida查询,display inline-box间隙问题以及calc()函数

    本文同时发表于本人个人网站 www.yaoxiaowen.com 距离上一篇文章已经一个月了,相比于写代码,发现写文章的确是更需要坚持的事情.言归正传,梳理一下这一个月来,在写ife任务时,有必要记录 ...

  5. 使用OpenGL ES绘制3D图形

    如果应用定义的顶点不在同一个平面上,并且使用三角形把合适的顶点连接起来,就可以绘制出3D图形了. 使用OpenGL  ES绘制3D图形的方法与绘制2D图形的步骤大致相同,只是绘制3D图形需要定义更多的 ...

  6. css绘制特殊图形,meida查询,display inline-box间隙问题以及calc()函数

    本文同时发表于本人个人网站 www.yaoxiaowen.com 距离上一篇文章已经一个月了,相比于写代码,发现写文章的确是更需要坚持的事情.言归正传,梳理一下这一个月来,在写ife任务时,有必要记录 ...

  7. Achartengine.jar绘制动态图形-饼图

    Achartengine.jar绘制动态图形一 --饼图 PS:我们在做安卓程序的时候,免不了会做一些图形,自己可以选择自定义view ,就是用Canvas画,也可以用写好的jar包,就是achart ...

  8. 学习笔记:HTML5 Canvas绘制简单图形

    HTML5 Canvas绘制简单图形 1.添加Canvas标签,添加id供js操作. <canvas id="mycanvas" height="700" ...

  9. 摘记 史上最强大的40多个纯CSS绘制的图形(一)

    今天在国外的网站上看到了很多看似简单却又非常强大的纯CSS绘制的图形,里面有最简单的矩形.圆形和三角形,也有各种常见的多边形,甚至是阴阳太极和网站小图标,真的非常强大,分享给大家. Square(正方 ...

随机推荐

  1. SVN的revert和update命令的区别

    svn中的revert和update 今天有人问到revert和update的问题. 刚开始还真被问住了. 因为感觉revert和update都可以将本地的copy更新到以前的一个版本,会有什么不同呢 ...

  2. hdu 4454 Stealing a Cake(三分法)

    给定一个起始点,一个矩形,一个圆,三者互不相交.求从起始点->圆->矩形的最短距离. 自己画一画就知道距离和会是凹函数,不过不是一个凹函数.按与水平向量夹角为圆心角求圆上某点坐标,[0, ...

  3. zoj3822 期望dp

    每天在一个n*m的棋盘上放棋子,问使得每一行,每一列都有棋子的期望天数 dp[n][m][k] 表示用k个棋子占据了n行,m列,距离目标状态还需要的期望天数 那么dp[n][m][k] = p1 * ...

  4. uIP中国的协议文件:Ch01

    uIP0.9 参考 by Doxygen 1.3.3 Tue Oct 7 15:51:00 2003 译: fishOnFly(鱼在飞) uIP-refman中文pdf下载 第1章  uIP TCP/ ...

  5. hihocoder第41周 骨牌覆盖(矩阵快速幂)

    由于棋盘只有两行,所以如果第i列的骨牌竖着放,那么就转移为第1列到第i-1列骨牌有多少种摆法 如果第一行第i列骨牌横着放,那么第二行第i列也要横着放,那么就转移为了第1列到第i-2列骨牌有多少种方法 ...

  6. Ubuntu 组态 Tomcat而每天的错误解决

    统环境:Ubuntu 14.10 安装版本号:apache-tomcat-7.0.54.tar.gz 安装步骤: 1.下载 Tomcat 下载 apache-tomcat-7.0.54.tar.gz ...

  7. Outlook将收到邮件的附件保存在磁盘

    1. 新建一个宏 1)文件->选项->自定义功能区, 把主选项卡的 开发工具勾选上. 2)开发工具->宏,输入宏名,创建. 加入以下代码 Public Sub SaveAttach( ...

  8. IntelliJ IDEA常见问题解决办法汇总

    (1)SVN相关的操作: 启用:方法1:VCS菜单下Enable Version Control Integration,点击之后选择相应的版本控制工具方法2:Setting中Version Cont ...

  9. Cocos2d-x 3.2 Lua演示样例 XMLHttpRequestTest(Http网络请求)

    Cocos2d-x 3.2 Lua演示样例 XMLHttpRequestTest(Http网络请求)     本篇博客介绍Cocos2d-x 3.2Lua演示样例中的XMLHttpRequestTes ...

  10. 三种方法让你的Service不被“一键加速”和系统杀掉

    基本上大家都知道提高service优先级能够在非常大程度上让你的service免于由于内存不足而被kill,当然系统仅仅是在此时先把优先级低的kill掉,假设内存还是不够,也会把你的service干掉 ...