pygame写桌面精灵最重要的步骤

2025-04-07  本文已影响0人  圣_狒司机

将窗体设置为透明:

import pygame
import sys
from pygame.locals import *
import win32gui, win32api
from win32.lib import win32con

def make_window_transparent(hwnd):
    # 设置窗口为分层窗口
    win32gui.SetWindowLong(hwnd, win32con.GWL_EXSTYLE, win32gui.GetWindowLong(hwnd, win32con.GWL_EXSTYLE) | win32con.WS_EX_LAYERED)
    # 设置窗口为完全透明
    win32gui.SetLayeredWindowAttributes(hwnd, win32api.RGB(0,0,0), 0, win32con.LWA_COLORKEY)

def main():
    pygame.init()
    screen = pygame.display.set_mode((400, 400), pygame.NOFRAME)
    hwnd = pygame.display.get_wm_info()["window"]
    make_window_transparent(hwnd)
    clock = pygame.time.Clock()

    # 加载具有透明通道的图像
    sprite_image = pygame.image.load('IMG_8566.JPG').convert_alpha()
    sprite_image = pygame.transform.scale(sprite_image, (sprite_image.get_width() // 4, sprite_image.get_height() //4))
    sprite_rect = sprite_image.get_rect()
    sprite_image.set_colorkey(pygame.Color(255, 255, 255))
    sprite_rect.center = (200, 200)  # 设置精灵初始位置在屏幕中央

    while True:
        for event in pygame.event.get():
            if event.type == QUIT:
                pygame.quit()
                sys.exit()

        screen.fill(pygame.Color(0, 0, 0))  # 使用黑色作为透明颜色键

        # 绘制精灵
        screen.blit(sprite_image, sprite_rect)

        pygame.display.flip()
        clock.tick(60)

if __name__ == '__main__':
    main()

这里make_window_transparent(hwnd)最重要,它获得窗体句柄,在底层操作使窗体透明,这个步骤无法在pygame里完成!不写成函数也可以:

import pygame
import sys
from pygame.locals import *
import win32gui, win32api
from win32.lib import win32con


def main():
    pygame.init()
    screen = pygame.display.set_mode((400, 400), pygame.NOFRAME)
    hwnd = pygame.display.get_wm_info()["window"]
    # 设置窗口为分层窗口
    win32gui.SetWindowLong(hwnd, win32con.GWL_EXSTYLE, win32gui.GetWindowLong(hwnd, win32con.GWL_EXSTYLE) | win32con.WS_EX_LAYERED)
    
    win32gui.SetLayeredWindowAttributes(hwnd, win32api.RGB(0,0,0), 0, win32con.LWA_COLORKEY)
    clock = pygame.time.Clock()
    # 设置窗口为完全透明
    # 加载具有透明通道的图像
    sprite_image = pygame.image.load('IMG_8566.JPG').convert_alpha()
    sprite_image = pygame.transform.scale(sprite_image, (sprite_image.get_width() // 4, sprite_image.get_height() //4))
    sprite_rect = sprite_image.get_rect()
    sprite_image.set_colorkey(pygame.Color(255, 255, 255))
    sprite_rect.center = (200, 200)  # 设置精灵初始位置在屏幕中央

    while True:
        for event in pygame.event.get():
            if event.type == QUIT:
                pygame.quit()
                sys.exit()

        screen.fill(pygame.Color(0, 0, 0))  # 使用黑色作为透明颜色键

        # 绘制精灵
        screen.blit(sprite_image, sprite_rect)

        pygame.display.flip()
        clock.tick(60)

if __name__ == '__main__':
    main()
上一篇 下一篇

猜你喜欢

热点阅读