Java之绘制艺术图案

package com.caiduping;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Ellipse2D;
import java.util.Random;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class ArtDesignFrame extends JFrame {
    ArtDesignPanel artDesignPanel = new ArtDesignPanel(); // 创建面板类的实例

    public static void main(String args[]) { // 主方法
        ArtDesignFrame frame = new ArtDesignFrame(); // 创建窗体类的实例
        frame.setVisible(true); // 显示窗体
    }

    public ArtDesignFrame() {
        super(); // 调用超类的构造方法
        setTitle("绘制艺术图案"); // 窗体标题
        setBounds(100, 100, 338, 230); // 窗体的显示位置和大小
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 窗体关闭方式
        add(artDesignPanel); // 将面板类的实例添加到窗体容器中
    }

    class ArtDesignPanel extends JPanel { // 创建内部面板类
        public void paint(Graphics g) {     // 重写paint()方法
            Graphics2D g2 = (Graphics2D)g; // 获得Graphics2D对象
            Ellipse2D.Float ellipse = new Ellipse2D.Float(-80, 5, 160, 10);// 创建椭圆对象
            Random random = new Random();// 创建随机数对象
            g2.translate(160, 90);// 平移坐标轴
            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++;
            }
        }
    }
}

run:

 

时间: 2024-10-25 00:04:20

Java之绘制艺术图案的相关文章

JAVA并发编程艺术 一(并发编程的挑战)

从今天起开始java并发编程艺术的学习,每一章学习完以后再这里记录下内容的重点,做个笔记,加深印象. 并发编程的目的是为了让程序运行的更快,但是,并不是启动更多的线程就能让程序最大限度地并发执行.在进行并发是,如果希望通过多现场执行任务让程序运行得更快,会面临非常多的挑战,比如上下文切换的问题,死锁的问题,以及受限于硬件和软件的资源限制问题,本章会介绍几种并发编程的挑战以及解决方案 1.上下问切换 即使是单核处理器也支持多线程执行代码,cpu通过给每个线程分配cpu时间片来实现这个机制.时间片是

css3实现的绘制图形图案效果代码实例

css3实现的绘制图形图案效果代码实例:如果使用css2实现绘制图形图案几乎是不可能的,或者说费好大的劲也只能够得到非常简单的图案,css3的出现将绘制复杂的图形这个目标成为可能,下面就是一个相关的代码实例,有这方面需要的朋友可以参考一下它的实现方式.代码如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" co

canvas一周一练 -- canvas绘制马尾图案 (5)

运行效果: <!DOCTYPE html> <html> <head> </head> <body> <canvas id="drawing" width="1000" height="600">A drawing of someing!</canvas> <script type="text/javascript"> var dr

canvas——绘制解锁图案

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>手机解锁</title> <meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=no" /> <style> body{ t

unity3d shader之Julia集和Mandelbrot集绘制美丽图案

在书上偶然看到Mandelbrot集的绘制方法,在网上查阅了一些资料,自己动手试了一下,终于"看到了"数学之美. 在百度百科上的简介 曼德勃罗特集是人类有史以来做出的最奇异,最瑰丽的几何图形.曾被称为"上帝的指纹". 这个点集均出自公式:Zn+1=(Zn)^2+C, 这是一个迭代公式,式中的变量都是复数.这是一个大千世界,从他出发可以产生无穷无尽美丽图案,他是曼德勃罗特教授在二十世纪七十年代发现的.你看上图中,有的地方象日冕,有的地方象燃烧的火焰,只要你计算的点足够

java绘图-绘制图片

这里主要说的是绘制图片,所谓绘制图片,就是把外部的图片信息加载到内存然后由java编译器去绘制,总的来说感觉相比B/S开发有一些麻烦,不是说原理麻烦,他们的原理其实都一样的,不一样的是他们实现的过程的复杂程度,要重写方法,加载图片,显示图片等.但是,还是有一定的意义,还有一点要注意的是,就是路径的加载,一定不能加载错误,负责回忆出现很大的问题. package huitu; import java.awt.*; import javax.swing.*; public class H1 exte

【java并发编程艺术学习】(三)第二章 java并发机制的底层实现原理 学习记录(一) volatile

章节介绍 这一章节主要学习java并发机制的底层实现原理.主要学习volatile.synchronized和原子操作的实现原理.Java中的大部分容器和框架都依赖于此. Java代码 ==经过编译==>Java字节码 ==通过类加载器==>JVM(jvm执行字节码)==转化为汇编指令==>CPU上执行. Java中使用的并发机制依赖于JVM的实现和CPU的指令. volatile初探 volatile是是轻量级的synchronized,它在多处理器开发中保证了共享变量的可见性.可见性

java:打印菱形图案(传参打印的自定义字符和行数)

打印菱形图案: 代码实现: public class Hello { public static void main(String args[]) { LingXingPrint("#", 7); } public static void LingXingPrint(String i, int num) { /** * 打印菱形,传参:i 为打印的字符,num为行数 . * 思路:将菱形分为上三角和下三角,上三角:每一行空格打印数为总行数-行号:每一行字符打印个数为2*行号-1;下三角

3.java并发编程艺术-java内存模型

3.1 java内存模型的基础 3.1.1并发编程模型的两个关键问题 在并发编程中,需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体).通信是指两个线程 之间以何种机制来交换信息.在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递. 在共享内存的并发模型里,线程之间共享程序的公共状态,通过写-读内存中的公共状态进行隐式通信.在消息传递的并发模型里,线程之间没有公共状态,线程之间必须通过发送消息来进行显式进行通信. 同步是指程序中用于控制不同线程