pygame中blit()參數(shù)的使用及臟矩形動畫形成的說明
pygame blit()參數(shù)使用及臟矩形動畫形成
pygame中surface的blit()想必是游戲入門經(jīng)常用到的方法,但是看了網(wǎng)上的內(nèi)容,都沒什么具體描述的文章,所以斗膽來做個說明,有錯的地方敬請指出,畢竟我也才用pygame庫沒幾天。
假設(shè)B是一張圖,即在pygame的surface對象
(pygame可以畫很多張圖,但只有一張圖是屏幕畫布,畫在屏幕畫布中的東西才能顯示出來)
- B.blit()的功能是把一張圖A粘貼到另一張圖B上,這意味著B上的圖將被A上的圖覆蓋,且永久不能恢復(fù)。
- blit()的原型是blit(source, dest, area=None, special_flags = 0),返回值為rect對象,返回被改變的畫面區(qū)域。
參數(shù)有
source:一個surface對象,可以理解為一張圖;dest:一個可以標(biāo)識坐標(biāo)的東西,可以是一個(x,y)元組。也可以是一個(x,y,height,width)元組,也可以是一個Rect對象,Rect對象可以理解為有位置有大小的矩形。area:一個Rect對象
其中,source就是你要復(fù)制粘貼到B上的A圖片。
pygame的坐標(biāo)體系中以左上角為原點(diǎn),向右向下兩個方向作x軸y軸,構(gòu)成坐標(biāo)(x,y),注意是被畫的B對象的左上角,如果這個對象是屏幕,那就是屏幕的左上角了。
要講dest,先說Rect對象,Rect對象是一個含有坐標(biāo)信息和大小的矩形(都是相對畫布而言的,非屏幕),所以可以用來表征畫布上的一個區(qū)域
粘貼的矩形圖片的左上角位置就是pygame坐標(biāo)軸的坐標(biāo)點(diǎn)。再次提醒我說的坐標(biāo)都是相對于畫布而言的,畫布可不一定使屏幕。
更詳細(xì)一點(diǎn)說,用(x,y)時粘貼到A的大小不受限制,如果還用width和height參數(shù),或是使用Rect對象,都將使超出這個Rect大小的內(nèi)容不能顯示
最后area,作用是剪切要粘貼的圖片A的一部分,由于Rect對象含有位置信息(x,y),大小信息width,height。
所以用了area參數(shù),將會以要畫的A的左上角為坐標(biāo)體系,把Rect對象表征的區(qū)域的圖畫扣出來,然后把這部分給B畫布。
感覺有點(diǎn)暈是吧,那么這樣理解吧畫布B.blit(畫面A,區(qū)域1,區(qū)域2),作用是用畫面A的區(qū)域2的畫面摳出來粘貼到畫布B的區(qū)域1上,如果區(qū)域1只給了(x,y)坐標(biāo),那區(qū)域1就是(x,y)向右向下,無限大的區(qū)域了
圖示:rect_green.blit(rect_red,rect_black,rect_blue)
假如有兩個表面:
紅色邊框的表面代表rect_red(要復(fù)制的畫面),rect_blue的坐標(biāo)就是藍(lán)色框框左上角到紅色框框左上角的位置,大小就是藍(lán)色框框那么大

畫布rect_green,由于調(diào)用了rect_black參數(shù),所以會截取畫面的一部分,即黑色框框作為畫布

然后把藍(lán)色畫面剪切

然后左黑色框框左上角和藍(lán)色框框?qū)R,粘貼上去

注意藍(lán)色圖那么大,粘貼到黑色框框就只有左上角粘貼上去了。
然后臟矩形動畫,無非就是在把藍(lán)色框框復(fù)制粘貼到黑色框框前先把黑色框框所在的綠色框框區(qū)域保存,再扣藍(lán)色框框到黑色框框,最后再把保存的綠色框框里面的黑色框框扣回去,還原畫面,然后就能保持背景不變,繼續(xù)循環(huán)扣其他區(qū)域了。
總結(jié)
希望這篇文章會對你學(xué)習(xí)臟矩形動畫和動畫繪圖有幫助。
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
一篇文章帶你了解Python的進(jìn)程,線程和協(xié)程
這篇文章主要為大家介紹了Python的進(jìn)程,線程和協(xié)程,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-01-01
opencv 獲取rtsp流媒體視頻的實(shí)現(xiàn)方法
這篇文章主要介紹了opencv 獲取rtsp流媒體視頻的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
Python中選擇結(jié)構(gòu)實(shí)例講解
在本篇文章里小編給大家整理了關(guān)于Python選擇結(jié)構(gòu)的基礎(chǔ)知識點(diǎn)及相關(guān)實(shí)例,有需要的朋友們可以學(xué)習(xí)參考下。2022-11-11
python實(shí)現(xiàn)的web監(jiān)控系統(tǒng)
這篇文章主要介紹了python實(shí)現(xiàn)的web監(jiān)控系統(tǒng),幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下2021-04-04
PyTorch 如何設(shè)置隨機(jī)數(shù)種子使結(jié)果可復(fù)現(xiàn)
這篇文章主要介紹了PyTorch 設(shè)置隨機(jī)數(shù)種子使結(jié)果可復(fù)現(xiàn)操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-05-05

