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

将窗体设置为透明:

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()
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容