目录

java绘图基础-用java代码画一个房子

java绘图基础 : 用java代码画一个房子

网页左边,向下滑有目录索引,可以根据标题跳转到你想看的内容

一、概述

java绘图的主要核心类
1、Graphics类,此类可以画图形,线条等,但是设置到变形等就不行了,由此衍生出更强大的类,Graphics2D
2、Graphics2D,更加强大的绘图类

1、绘制基本图形

绘图方法

https://i-blog.csdnimg.cn/blog_migrate/b010b3ba2a692337c786929ffdc3d3c5.png

https://i-blog.csdnimg.cn/blog_migrate/144acb8ac95d95028b8c50aa523b4175.png

https://i-blog.csdnimg.cn/blog_migrate/416039e61e5f32cf5782e5bb43ac8d7d.png

package com.test;

import java.awt.Canvas;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Shape;
import java.awt.geom.Rectangle2D;

import javax.swing.JFrame;

public class Test extends JFrame{
	public Test() {
		setBounds(500,300, 800, 500);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);
		MyCanvas myCanvas = new MyCanvas();
		add(myCanvas);
	}
	public static void main(String[] args) {
		new Test();
	}
	private class MyCanvas extends Canvas{ //Canvas类,是画布,我们没有纸,只有笔,也没办法画
		@Override
		public void paint(Graphics g) {
			// TODO Auto-generated method stub
			Graphics2D g2d = (Graphics2D)g;
			g2d.drawOval(5, 5, 100, 100);//画圆
			g2d.drawRect(15,15,80,80);//画矩形
			g2d.fillRect(45, 45,80,80);//填充矩形
			g2d.drawArc(320,25,100,50,270,200);//弧线
			g2d.drawLine(5,120,100,120);//直线
			g2d.drawRoundRect(102, 120, 100, 50, 10, 10);//圆角矩形
			
			//画多边形,第一个参数是横坐标数组,第二个是纵坐标数组,第三个是有几个点
			int x[]= {250,300,250,300};
			int y[]= {130,130,200,200};
			
//			g2d.drawPolygon(x, y, 4);
			
			//画多边线(测试多边线需要注释上面的代码,因为用的参数一样重合了)
			
			g2d.drawPolyline(x, y, 4);
			//上面都是Graphics的方法,下面介绍2d是如何运作的
			
			Shape shape = new Rectangle2D.Double(110,5,100,100);
			
			g2d.draw(shape);
			g2d.fill(shape);
		}
	}
}

2、设置画笔颜色

https://i-blog.csdnimg.cn/blog_migrate/3d2c67bf5c8dc84091080878aa768422.png

https://i-blog.csdnimg.cn/blog_migrate/23e0af6e51c618b9f7dd3f83b06ac5f5.png

package com.test;

import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Shape;
import java.awt.geom.Rectangle2D;

import javax.swing.JFrame;

public class Test extends JFrame{
	public Test() {
		setBounds(500,300, 800, 500);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);
		MyCanvas myCanvas = new MyCanvas();
		add(myCanvas);
	}
	public static void main(String[] args) {
		new Test();
	}
	private class MyCanvas extends Canvas{
		@Override
		public void paint(Graphics g) {
			// TODO Auto-generated method stub
			Graphics2D g2d = (Graphics2D)g;
			g2d.fillRect(5,120,100,120);//直线
			Color blue =Color.BLUE;
			g2d.setColor(blue);
			g2d.fillRect(125,125,103,125);
		}
	}
}

3、设置画笔(粗细)

https://i-blog.csdnimg.cn/blog_migrate/852195b47a9010576c21ca6b06eee649.png

https://i-blog.csdnimg.cn/blog_migrate/dd0665cbd0966d13f7b68e7b18848a07.png https://i-blog.csdnimg.cn/blog_migrate/9c2d49e416f5150c5c74e2aea657a852.png https://i-blog.csdnimg.cn/blog_migrate/d60806f27b7ce8bb08dcffc85a020277.png

package com.test;

import java.awt.BasicStroke;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Shape;
import java.awt.Stroke;
import java.awt.geom.Rectangle2D;

import javax.swing.JFrame;

public class Test extends JFrame{
	public Test() {
		setBounds(500,300, 800, 500);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);
		MyCanvas myCanvas = new MyCanvas();
		add(myCanvas);
	}
	public static void main(String[] args) {
		new Test();
	}
	private class MyCanvas extends Canvas{
		@Override
		public void paint(Graphics g) {
			// TODO Auto-generated method stub
			Graphics2D g2d = (Graphics2D)g;
			g2d.drawLine(5, 120, 100, 120);
			Stroke stroke = new BasicStroke(10);//1、创建画笔对象
			g2d.setStroke(stroke);//2、设置画笔
			g2d.drawLine(5, 150, 100, 150);//画
		}
	}
}

4、画一个房子

https://i-blog.csdnimg.cn/blog_migrate/1b5be97a5614a82e6f332527723c5387.png

package com.test;

import java.awt.BasicStroke;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Shape;
import java.awt.Stroke;
import java.awt.geom.Rectangle2D;
import java.util.Random;

import javax.swing.JFrame;

public class Test extends JFrame{
	public Test() {
		setBounds(500,300, 800, 500);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		getContentPane().setBackground(new Color(78, 194, 207));
		setVisible(true);
		MyCanvas myCanvas = new MyCanvas();
		add(myCanvas);
	}
	public static void main(String[] args) {
		new Test();
	}
	private class MyCanvas extends Canvas{
		@Override
		public void paint(Graphics g) {
			// TODO Auto-generated method stub
			Graphics2D g2d = (Graphics2D)g;
			//云
			g2d.setColor(Color.WHITE);
			g2d.fillOval(550, 2, 100, 50);
			g2d.fillOval(520, -3, 80, 50);
			g2d.fillOval(580, -5, 80, 50);
			//烟囱
			g2d.setColor(Color.BLACK);
			g2d.fillRect(250, 20, 30, 80);
			g2d.fillRect(650, 20, 30, 80);
			//房顶
			int x[] = {100,200,300};
			int y[] = {100,10,100};
			g2d.setColor(new Color(124,86,39));
			g2d.fillPolygon(x, y, 3);
			int x1[] = {500,600,700};
			int y1[] = {100,10,100};
			g2d.fillPolygon(x1, y1, 3);
			//屋子
			g2d.setColor(new Color(109,134,128));
			g2d.fillRect(120,100,160,100);
			g2d.fillRect(520,100,160,100);
			//窗户和门
			g2d.setColor(Color.WHITE);
			g2d.fillRect(130,120,50,50);
			g2d.fillRect(220,120,50,80);
			g2d.fillRect(530,120,50,50);
			g2d.fillRect(620,120,50,80);
			//太阳
			g2d.setColor(Color.YELLOW);
			g2d.fillOval(740, -20, 50, 50);
			
			//路
			g2d.setColor(new Color(124,86,39));
			g2d.fillRect(0, 200, 800, 300);
			
			//石子
			g2d.setColor(Color.BLACK);
			g2d.fillOval(0, 205, 10, 20);
			Random r = new Random();
			int moveX = 0;
			int moveY = 0;
			for(int i = 0;i<=100;i++) {
				moveX = r.nextInt(800);
				moveY = r.nextInt(300)+200;
				g2d.fillOval(moveX, moveY, r.nextInt(10)+5,r.nextInt(15)+5);
			}
		}
	}
}