pygame截取图片的部分

主要用到了

capture=screen.subsurface(select_rect).copy()模块

import pygame
import sys
from pygame.locals import *
pygame.init()

size=width,height=800,600


bg=(255,255,255)
clock=pygame.time.Clock()
screen=pygame.display.set_mode(size)


pygame.display.set_caption('suguoliang')
turtle=pygame.image.load('turtle.png')
position=turtle.get_rect()
position.center = width // 2, height // 2
#选择
select=0 
select_rect=pygame.Rect(0,0,0,0)
# 拖拽
drag=0

while True:
    for event in pygame.event.get():
        if event.type==QUIT:
            sys.exit()
        elif event.type==MOUSEBUTTONDOWN:
            if event.button==1:
                #第一次点击,选择范围,未拖拽
                if select==0 and drag==0:
                    #获取鼠标的位置
                    pos_start = event.pos
                    select=1

                #第二次点击,推拽图像,    
                elif select==2 and drag==0:
                    #获得裁剪的图像,将选好的图片copy出来
                    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==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(turtle,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个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值