python pygame 裁剪拖拽图片
程序员文章站
2023-11-17 20:12:16
一.图片裁剪拖拽import pygameimport sys# 初始化pygamepygame.init()size = width ,height = 900, 500speed = [-2,1]bg = (255,255,255)fullscreen = Falseclock = pygame.time.Clock()# 创建指定大小的窗口screen = pygame.display.set_mode(size)# 设置窗口标题pygame.display.se...
一.图片裁剪拖拽
import pygame
import sys
# 初始化pygame
pygame.init()
size = width ,height = 900, 500
speed = [-2,1]
bg = (255,255,255)
fullscreen = False
clock = pygame.time.Clock()
# 创建指定大小的窗口
screen = pygame.display.set_mode(size)
# 设置窗口标题
pygame.display.set_caption("闲得发慌")
# 加载图片
people = pygame.image.load("p.gif")
# 获得图像矩形位置
position = people.get_rect()
position.center = width // 2, height // 2
# 0 :未选择 1:选择中 2:完成选择
select = 0
select_rect = pygame.Rect(0,0,0,0) # 初始化一个矩形对象
# 0 :未拖拽 1:拖拽中 2:完成拖拽
drag = 0
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
elif event.type == pygame.MOUSEBUTTONDOWN:
if event.button == 1:
# 鼠标左键第一次点击,选择范围
if select == 0 and drag == 0:
pos_start = event.pos
select = 1
# 第二次点击,拖拽图片
elif select == 2 and drag == 0:
capture = screen.subsurface(select_rect).copy() # 创建一个子图像
cap_rect = capture.get_rect()
drag = 1
# 第三次初始化
elif select == 2 and drag == 2:
select = 0
drag = 0
elif event.type == pygame.MOUSEBUTTONUP:
if event.button == 1:
# 第一次释放,结束选择
if select == 1 and drag == 0:
pos_stop = event.pos
select = 2
# 第二次释放,结束拖拽
if select == 2 and drag == 1:
drag = 2
# 填充背景
screen.fill(bg)
# 更新图像位置
screen.blit(people,position)
# 实施绘制选择框
if select:
mouse_pos = pygame.mouse.get_pos()
if select == 1:
pos_stop = mouse_pos
select_rect.left ,select_rect.top = pos_start
select_rect.width ,select_rect.height = pos_stop[0] - pos_start[0], pos_stop[1] - pos_start[1]
pygame.draw.rect(screen, (0,0,0),select_rect,1)
# 拖拽裁剪的图像
if drag:
if drag == 1:
cap_rect.center = mouse_pos
screen.blit(capture,cap_rect)
# 更新界面
pygame.display.flip()
# 延迟10毫秒
#pygame.time.delay(5)
# 控制帧率
clock.tick(30)
这里主要是靠两个变量来判断正在进行的事件
而且出现了两个不同的rect
函数
第一个select_rect = pygame.Rect(0,0,0,0) # 初始化一个矩形对象
,这个参数是坐标
第二个pygame.draw.rect(screen, (0,0,0),select_rect,1)
是在draw
模块下的rect
函数,这个是为了在screen
上面绘制一个(0,0,0,)黑色
,范围为select_rect
,边框厚度为1的矩形
本文地址:https://blog.csdn.net/yogur_father/article/details/107441300
下一篇: 美团、阿里、腾讯菜场争夺战