鱼C论坛

 找回密码
 立即注册
查看: 2139|回复: 1

教材中未提及透明小乌龟设置的原理,自定义函数blit_alpha()的实现步骤也存在不解

[复制链接]
发表于 2022-7-11 10:55:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 lzb1001 于 2022-7-11 15:41 编辑

代码略(按小乌龟教材和视频中)

【代码分析】自定义函数blit_alpha()实现步骤:

①首先创造一个不带Alpha通道的Surface(事实上就是小乌龟所在的矩形区域)
对应代码:temp = pygame.Surface((source.get_width(), source.get_height())).convert() # 最底层(不带Alpha透明图层通道)

②然后用背景覆盖小乌龟所在的矩形区域位置(矩形区域与背景的正中心点完全重合),背景不带Alpha通道(background = pygame.image.load(r'd:\\work\\grass.jpg').convert())
对应代码:temp.blit(target, (-x, -y))  # 中间层(不带Alpha透明图层通道)

③此刻temp得到的是一个尺寸与小乌龟的尺寸一样大小(不带Alpha通道)、上面绘制着背景(不带Alpha通道)的Surface对象,这个Surface对象不带Alpha通道

④ 再将带Alpha通道的小乌龟覆盖上去
对应代码:temp.blit(source, (0, 0))   # 最顶层(带Alpha透明图层通道)
此时分析temp的构成,其应由三层组成:最底层是一个黑色矩形框(不带Alpha透明图层通道),其位置、大小与turtle相同;中间层是screen(不带Alpha透明图层通道);最顶层是turtle(带Alpha透明图层通道)。temp由以上三者合而为一,其中最顶层带alpha透明图层通道,这样的temp可以通过调用set_alpha()方法设置其透明度???

⑤ 由于temp是不带Alpha通道的Surface对象,因此可以使用set_alpha()方法设置整个图片(整个图片是否包含④ 中带Alpha通道的小乌龟?)的透明度
对应代码:temp.set_alpha(opacity)
--若此时的temp包含了④ 中带Alpha通道的小乌龟,那此时的temp是否带Alpha通道?若此时的temp带Alpha通道,如何可以使用set_alpha()方法设置整个图片的透明度?反之,若此时可以使用set_alpha()方法设置整个图片的透明度,说明此时的temp不带Alpha通道

⑥ 最后将设置好透明度的temp“贴”到指定位置上---此时的temp是否包含④ 中带Alpha通道的小乌龟?
对应代码:target.blit(temp, location)

------------------------------------------
Windows 10 专业版 | Python 3.7.6
------------------------------------------

【我的问题】

1、以上黑色文字主要根据小甲鱼教材及视频整理所得,红色字体为我加的备注和疑惑不理解的地方,请大神和诸位不吝指点

2、教材和视频中仅介绍实现的步骤,好像未提及实现原理


******************************

感谢大神不吝赐教,为新手解疑释惑。

赠人玫瑰,手有余香,好人一生平安!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-7-20 23:49:21 | 显示全部楼层
根据https://www.pygame.org/docs/ref/surface.html#pygame.Surface.set_alpha
提到的
This value is different than the per pixel Surface alpha. For a surface with per pixel alpha, blanket alpha is ignored and None is returned.

如果surface带alpha通道,传递给set_alpha的alpha值将被忽略,则可以判断,temp不带alpha通道
③我认为,temp应该包含带alpha通道的小乌龟,不然画面中的小乌龟从哪来?
④那么可以猜测,将带alpha通道的surface放到不带alpha通道的surface上,后者似乎仍然不带alpha通道
③④不确定,若有错误请指出
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-28 14:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表