初学pygame,看到了chop函数,于是找了一张图试了一下,发现按照网上说的和我实际出来的好像有点儿不一样,所以发一下,如果不对,欢迎指正
pygame.transform.chop(surface,rect)
函数原型,rect是截取的区域,返回的应该是出去截取部分剩下的部分,如下图:
然后就是关于这个矩形到底是怎么裁剪的,网上没有太多明说,我一开始以为后面两个是长度和宽度,但是好像不对,如下图所示:
这两张图分别是[0, 0, 40, 0]和[0, 0, 40, 30]
这是原图,如果按照常规理解的化,那么剩下的不可能仅仅是右边,而且[0,0,40,30]也不可能把右边上半部分截取掉
那么有一个猜测就是[x,y,w,h]是分开来算的,x和w是一对,y和h为一对,第一个矩形x+w为长度、画面高为高进行截取,第二个矩形y+h为高,画面长度为长度进行截取,截取完了之后剩下的部分组成一个矩形
可以看出跟原图对比,水平的红线没有了,右边的灰色区域整体没有了,如果只是截取30,30为远点,长10宽10区域的化,最后组成的矩形不可能没有水平的红线(其实我也不明白为什么扣掉一块儿以后还得组成一个矩形)
再反证一下,我想要留下图形下面的部分:如果按照网上给的定义,那么我应该设置RECT为[0,30,60,80](图片本身长为60,宽没细看,但是30肯定是可以截取到中上了) 那么我们运行一下
什么都没有,那么我们按照上面的猜测去设置一下,也就是说我要下半部分的话,那么x+w为长度的矩形我们不能截取设置为0,0,y+h为高的矩形我们设置0,20,即[0,0,0,30]
运行效果与我们的猜想一样,如果想保留下半部分的又半部分那么只需要把x+w为长度的矩形截掉一部分就可以了,例如设置为[0,0,20,30]
与我们的预期一样~
画个容易懂的例子:
假设[x,y,w,h]中x和y都是0,那么没有画线的部分为最后显示再屏幕上面的部分(这里面的矩形值应该是相对于图片的,个人认为,因为传入的是待剪切的图片)
还有,这玩意儿有法看源码吗,没找到源码,不知道到底怎么执行的~如果有真正了解的朋友留下言告诉我是不是这个意思,或者给我一些指正~