pygame关于PNG图像set_colorkey后有黑框
学习过程:1、刚开始学习,作图直接做PNG格式的角色图片,后面发现问题,如果我需要在角色上添加装备或一些简单的变化能不能搞定呢?
试了下,PNG.bilt(surface,(0,0)),失败,我新作的surface装备不能会知道我的PNG图像上,语法不支持。
2、解决方法,查阅资料后,我决定绘制一个和PNG图片一样大小的新的Surface来作为我的底图,或者说图框,开始动手
image = pygame.Surface(w, h)
底图画好了,把我的PNG贴上去吧!
image.bilt(PNG, (0,0))
纳尼! 就知道贴完以后透明部分直接变成黑色了,不怕,抠图
image.set_colorkey(0, 0, 0)
抠图完成!!!!!!!!!!!!!
我靠,好出境的大黑边!!!!!!!
3、解决过程,来吧,折腾吧!
试试填充我的image一个指定颜色,然后在扣呗
image.fill(255, 255, 255)
image.bilt(PNG, (0,0))
image.set_colorkey(255, 255, 0)
日,大黑边变成了大红边!!!
我不禁思考,看来是我作图的时候PNG边缘的alpha通道轻微改变了底色的RBG值
那既然这样,我直接让image这个surface对象填充个透明的底色不就好了!
对了,之前测试过,用draw方法画的图不能设置透明度,但是surface是可以填充透明度的!,开工
4、解决方案
PNG = pygame.image.load('PNG.png').convert_alpha() #导入我的英雄角色,PNG图片
PNG = pygame.transform.scale(PNGt,(widht, height)).convert_alpha() #把我的PNG设置成需要的大小
image = pygame.Surface((widht, height)) #创建一个一样大的surface对象 image
color_temp = pygame.Color(255, 255, 255, 0) # 设置颜色和透明度,其实什么颜色已经不重要了,关键是alpha通道的0!
image.fill(color_temp) #把透明的底色填充进去
image.bilt(PNG,(0,0)) #把我的英雄PNG贴上去
5、测试一下
完美消除PNG抠图方法产生的大黑框!!!!!
页:
[1]