上QQ阅读APP看书,第一时间看更新
2.3.2 选取图片块
下面先看看如何选取鼠标所单击的图片块。根据前面的介绍,我们知道可以通过pos变量来获取鼠标单击处的坐标值,但是该坐标仅仅表示鼠标指针所指向的像素点坐标,而在同一个图片块内的不同位置单击鼠标,你会发现pos的值都不相同。如何通过pos的值来确定究竟单击的是哪个图片块呢?
由于各个图片块都是显示在窗口中某个方格内的,于是可以通过pos的值求得鼠标单击的图片块位于哪个方格,进而确定所要选取的图片块是哪一块。可以将on_mouse_down()函数修改为如下代码:
在上面的代码中,定义了两个变量grid_x和grid_y,分别表示图片块方格的水平索引值(即列号)和垂直索引值(即行号),然后用鼠标点的水平坐标(pos[0])对图片块尺寸SIZE做“取整”运算,得到方格的水平索引值,并保存到grid_x中;用鼠标点的垂直坐标(pos[1])对SIZE“取整”运算,得到方格的垂直索引值,并保存到grid_y中。
接着循环遍历图片块列表pics,看看哪个图片块所在方格的水平和垂直索引值与grid_x和grid_y的值相一致。为此在on_mouse_down()函数中加入如下代码:
上面的代码定义了变量thispic,用于保存满足要求的图片块,而该图片正是通过鼠标单击所选取的图片块。