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

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

一、概述

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

1、绘制基本图形

绘图方法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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、设置画笔颜色

在这里插入图片描述
在这里插入图片描述

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、设置画笔(粗细)

在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

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、画一个房子

在这里插入图片描述

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);
			}
		}
	}
}

  • 10
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

殷丿grd_志鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值