簡體   English   中英

如何從Pygame的精靈表中的精靈中刪除黑色背景

[英]How to remove black background from sprite in sprite sheet in pygame

我正在嘗試從這張精靈圖片中刪除這張精靈的黑色背景。 正如您將在以下代碼中看到的和這篇文章所建議的那樣( 透明的spritesheet具有黑色背景 ),我嘗試使用pygame.SRCALPHA標志,但這似乎不起作用。 在使用透明背景進行轉換后,我什至嘗試使用相同的精靈表,並且在Mario精靈周圍得到相同的黑色邊框。

import pygame

pygame.init()

def imgcolorkey(image, colorkey):
    if colorkey is not None:
        if colorkey is -1:
            colorkey = image.get_at((0, 0))
        image.set_colorkey(colorkey, RLEACCEL)
    return image

class SpriteSheet(object):
    sprite_sheet = None
    def __init__(self, file_name):
        #self.sprite_sheet = pygame.image.load(file_name).convert()
        self.sprite_sheet = pygame.image.load(file_name,pygame.SRCALPHA)
    #self.sheet = load_image(filename)

    def imgat(self, rect, colorkey = None):
        rect = pygame.Rect(rect)
        #image = pygame.Surface(rect.size).convert()
        #image = pygame.Surface(rect.size, pygame.SRCALPHA ).convert()
        image = pygame.Surface(rect.size, pygame.SRCALPHA)
        #image.fill(transColor)
        image.blit(self.sprite_sheet, (0, 0), rect)
        return imgcolorkey(image, colorkey)

    def imgsat(self, rects, colorkey = None):
        imgs = []
        for rect in rects:
            imgs.append(self.imgat(rect, colorkey))
        return imgs

在此處輸入圖片說明

找到了問題。

在主類中構建圖像時,我沒有發送-1的colorkey參數。

我變了:

mario_image = SPRITE_SHEET.imgsat(MARIO_COORD)

至:

images = SPRITE_SHEET.imgsat(MARIO_COORD,-1)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM