|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
我看了这一讲的视频后觉得小甲鱼最后一个代码中对 blit()中输入负数做position不是很理解。不明白这个是怎么算的。比如(-1,-1)会在哪。而且
在 temp.blit(target, (-x, -y )) 中, target 的尺寸比 temp 的还要大。这个有什么特殊效果吗, 谢谢
以下是小甲鱼的源代码(图片在附件中)
import pygame
import sys
from pygame.locals import *
pygame.init()
size = width, height = 640, 480
bg = (0, 0, 0)
clock = pygame.time.Clock()
screen = pygame.display.set_mode(size)
pygame.display.set_caption("FishC Demo")
turtle = pygame.image.load("turtle.png").convert_alpha()
background = pygame.image.load("background.jpg").convert()
position = turtle.get_rect()
position.center = width // 2, height // 2
def blit_alpha(target, source, location, opacity):
x = location[0]
y = location[1]
temp = pygame.Surface((source.get_width(), source.get_height())).convert()
temp.blit(target, (-x, -y ))
temp.blit(source, (0, 0))
temp.set_alpha(opacity)
target.blit(temp, location)
while True:
for event in pygame.event.get():
if event.type == QUIT:
sys.exit()
screen.blit(background, (0, 0))
blit_alpha(screen, turtle, position, 200)
pygame.display.flip()
clock.tick(30)
我试着回答一下:
在 temp.blit(target, (-x, -y )) 中, target 的尺寸比 temp 的还要大。这个有什么特殊效果吗?
有啊,(-x,-y)的位置,使得左上的原点就是在target的原点了,画的时候,其实是把garget的背景又画了一遍,但因为是在temp上画,那么相应的应该在temp这个区域中的背景就画到temp上了。
不知以上回答能否解释清楚。
|
-
-
|