Java_缓冲画布

当我们要会绘制的图形有很多点、线、图案时,图案加载出来的速度就会很慢,比如画10万个点

	for (int i = 0; i < 100000; i++) {
		double tempx = Math.sin(a*y)+c * Math.cos(a*x);
		double tempy = Math.sin(b*x)+d * Math.cos(b*y);
		int px = (int)(tempx*60+300);
		int py = (int)(tempy*60+300);
		x=tempx;
		y=tempy;
		bg.drawLine(px, py, px, py);
	}

可以看到,加载速度比较慢,图案慢慢成型

BufferedImage是一个带缓冲区图像类,主要作用是将一幅图片加载到内存中,我们可以先将要画的图案画到缓冲画布上,然后再用画笔绘制这张图片,这样速度会变得很快。

	BufferedImage bi = new BufferedImage(this.getWidth(), this.getHeight(), BufferedImage.TYPE_INT_ARGB);
	// 从缓冲画布上取画笔 
	Graphics bg = this.getGraphics();
	double x=0,y=0;
	double a=-1.8,b=-2.0,c=-0.5,d=-0.9;
	Color color = new Color(128,0,0,128);
	bg.setColor(color);
	for (int i = 0; i < 100000; i++) {
		double tempx = Math.sin(a*y)+c * Math.cos(a*x);
		double tempy = Math.sin(b*x)+d * Math.cos(b*y);
		int px = (int)(tempx*60+300);
		int py = (int)(tempy*60+300);
		x=tempx;
		y=tempy;
		bg.drawLine(px, py, px, py);
	}
	// 用画笔将缓冲画布画出来
	g.drawImage(bi, 0, 30, null);	

效果图
可以看到刚开始是没有图案的,这时候是先将图案画到缓冲画布上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值