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

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

 package com.example.artdesign.ui;

 import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Ellipse2D;
import java.util.Random; import javax.swing.JPanel; /***
* 创建内部面板类
* @author lenovo'
*
*/
public class ArtDesignPanel extends JPanel{ @Override
public void paint(Graphics g) { //重写paint方法
// TODO Auto-generated method stub
Graphics2D g2 = (Graphics2D)g; //获得Graphics2D对象
Ellipse2D.Float ellipse = new Ellipse2D.Float(-80, 5, 160, 10); //创建椭圆对象
g2.translate(160, 90); //平移坐标轴 Random random = new Random(); //获得随机数
int R = random.nextInt(256); //随机产生颜色的R值
int G = random.nextInt(256); //随机产生颜色的G值
int B = random.nextInt(256); //随机产生颜色的B值 Color color = new Color(R,G,B); //创建颜色对象
g2.setColor(color); //指定颜色
g2.draw(ellipse); //绘制椭圆 int i = 0;
while (i < 100) { R = random.nextInt(256); //随机产生颜色的R值
G = random.nextInt(256); //随机产生颜色的G值
B = random.nextInt(256); //随机产生颜色的B值 color = new Color(R,G,B); g2.setColor(color);
g2.rotate(10); //旋转画布
g2.draw(ellipse); //绘制椭圆 i++;
} }
}

ArtDesignPanel

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

package com.example.artdesign.ui;

import java.awt.Dimension;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener; import javax.swing.JFrame; public class ArtDesignFrame extends JFrame{ /**
*
*/
private static final long serialVersionUID = -1760723807752896879L; public ArtDesignFrame() {
// TODO Auto-generated constructor stub
this.add(new ArtDesignPanel());
this.addWindowListener(new WindowListener() { @Override
public void windowOpened(WindowEvent arg0) {
// TODO Auto-generated method stub } @Override
public void windowIconified(WindowEvent arg0) {
// TODO Auto-generated method stub } @Override
public void windowDeiconified(WindowEvent arg0) {
// TODO Auto-generated method stub } @Override
public void windowDeactivated(WindowEvent arg0) {
// TODO Auto-generated method stub } @Override
public void windowClosing(WindowEvent arg0) {
// TODO Auto-generated method stub } @Override
public void windowClosed(WindowEvent arg0) {
// TODO Auto-generated method stub
System.exit(0);
} @Override
public void windowActivated(WindowEvent arg0) {
// TODO Auto-generated method stub }
});
this.setVisible(true); } public static void main(String[] args) {
ArtDesignFrame frame = new ArtDesignFrame();
frame.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
frame.setSize(360, 360);
} }

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. Codeforces 549G. Happy Line 馋

    非常有趣的贪婪: Let's reformulate the condition in terms of a certain height the towers, which will be on t ...

  2. JVM必备指南(转)

    本文由 ImportNew - xiafei 翻译自 anturis.欢迎加入翻译小组.转载请见文末要求. 简介 Java虚拟机(JVM)是Java应用的运行环境,从一般意义上来讲,JVM是通过规范来 ...

  3. ORA-16525: the Data Guard broker is not yet available

    DGMGRL> disable configuration;ORA-16525: the Data Guard broker is not yet available Configuration ...

  4. spoj Balanced Numbers(数位dp)

    一个数字是Balanced Numbers,当且仅当组成这个数字的数,奇数出现偶数次,偶数出现奇数次 一下子就相到了三进制状压,数组开小了,一直wa,都不报re, 使用记忆化搜索,dp[i][s] 表 ...

  5. WPF换肤之三:WPF中的WndProc

    原文:WPF换肤之三:WPF中的WndProc 在上篇文章中,我有提到过WndProc中可以处理所有经过窗体的事件,但是没有具体的来说怎么可以处理的. 其实,在WPF中,要想利用WndProc来处理所 ...

  6. WPF 数字小键盘Themes

    <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" x ...

  7. 一个Jquery特效(转)

    见证花开!!码上有花 先看效果 尝试点击,IE9+ 画心 清空 ... 请自由点击画布   创意来自于网络 可搜搜[程序员表白] 看上去像是[当耐特]的作品的加工版本 代码 当然要自己写了 能力有限, ...

  8. 0x00000000该内存不能为read

    0X000000存储器不能read解决方案 有这种现象方面,首先,在硬件,这有问题的内存,二,软件,其中有许多问题. 一:先说说硬件: 一般来说,电脑硬件不easy生病.内存故障的可能性并不大(非你的 ...

  9. 玩转web之ajax(一)---使用表单的serialize()方法中文乱码解决

    有时候我们需要使用ajax提交去提交form的值,这样就需要使用serialize()去获取form的值,但这样获取的值如果有中文,会乱码,原因和解决方法如下: 原因:.serialize()自动调用 ...

  10. javascript于boolean类型转换,运营商&amp;&amp;和|| 返回值

    javascript它是弱类型语言,不管是什么类型的数据可以被转换成boolean种类.转换规则如下面的: 数据类型                 转换为boolean后的值 NAN         ...