首页 理论教育 使用Java画布实现拼图游戏

使用Java画布实现拼图游戏

时间:2023-11-26 理论教育 版权反馈
【摘要】:本节考虑在Java的专用画图控件画布类Canvas中直接作图,而不是在将图像分成9个分图分别放置到9个控件中。注意,经过实际测试,画布Canvas的原点在框架中的坐标是。所以,在画布中作图,使用语句相当于在框架中图15-7 在Frame的Canves中drawImage()2.在画布类中实现拼图游戏设计图像载入画布类的鼠标操作。由于使用了画布类,数据的输入与输出需要通过一些输入和输出函数进行。

使用Java画布实现拼图游戏

本节考虑在Java的专用画图控件画布类Canvas中直接作图,而不是在将图像分成9个分图分别放置到9个控件中。这个方法得益于Java作图函数drawImage()的强大功能。

1.函数drawImage()直接作图的方法

(1)Java的作图函数drawImage()有多种重载

●drawImage(Image image,int x,int y,ImageObserver observer);

将image在坐标(x,y)处,以原图的宽高画出image,(不具有缩放功能)。

●drawImage(Image image,int x,int y,int width,int height,ImageObserver observer);

将image在坐标(x,y)处,宽为width高为height的大小画出,(因此,具有缩放功能)。

●drawImage(Image image,int x0,int y0,int x1,int y1,

int u0,int v0,int u1,int v1,ImageObserver observer);

取image从左上角(u0,v0)到右下角(u1,v1)矩形区内的图,放到左上角(x0,y0)到右下角(x1,y1)的矩形区画出。其中observer—报告透视过程进行的对象,一般用this,(因此,具有缩放功能)。

【例15-5】函数drawImage()的3种重载和图像载入画布类。

978-7-111-44824-2-Part02-245.jpg

978-7-111-44824-2-Part02-246.jpg

运行结果如图15-7所示。

(2)框架Frame与画布的原点

如图15-7所示。注意,经过实际测试,画布Canvas的原点在框架中的坐标是(0,30)。所以,在画布中作图,使用语句

978-7-111-44824-2-Part02-247.jpg

相当于在框架中(www.xing528.com)

978-7-111-44824-2-Part02-248.jpg

978-7-111-44824-2-Part02-249.jpg

图15-7 在Frame的Canves中drawImage()

2.在画布类中实现拼图游戏

【例15-6】设计图像载入画布类的鼠标操作。

978-7-111-44824-2-Part02-250.jpg

978-7-111-44824-2-Part02-251.jpg

978-7-111-44824-2-Part02-252.jpg

978-7-111-44824-2-Part02-253.jpg

3.[编程说明]

(1)画布类Canvas

原始画布类Canvas必须经过继承才能应用。其中作图方法paint()中使用了drawImage()中最复杂的一种,即

978-7-111-44824-2-Part02-254.jpg

请仔细地分析与体会其中各参数的关系,这种用法不常见到。

(2)图像映射与数组mapNo[]

mapNo[y]==x的意义是“原图image上编号为x的块,变换到编号为y的区域”。与表达式revNo[x]==y具有相同的意义。

由于使用了画布类,数据的输入与输出需要通过一些输入和输出函数进行。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈