当前位置:   article > 正文

Python 之 pygame 学习(截取图像显示)_pygame 分割提取图片

pygame 分割提取图片

一、相关方法知识

  1. pygame.mouse.get_pos():获取鼠标光标的位置,X坐标和Y坐标
    该位置相对于显示屏的左上角。光标位置可以位于显示窗口之外,但始终限制在屏幕上。
  2. pygame.draw.rect():画一个矩形
rect(surface,color,rect,width = 0)
surface:在此屏幕上绘制
color:要绘制的颜色,如果使用元组,则alpha值是可选的(RGB[A])
rect:要绘制的矩形,位置和尺寸(这个矩形具有:left,top,width,height)
width:用于线条粗细或表示要填充矩形(不要与rect参数的宽度值混淆)

返回:	
一个矩形边界变化的像素,如果没有绘制任何东西,边界矩形的位置将是给定rect 参数的位置,其宽度和高度将为0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  1. blit():将一个图像绘制到另一个
blit(source,dest)
source:在此Surface上绘制源Surface。
dest:参数定位绘图。
	  Dest可以是表示源左上角的坐标对。
	  Rect也可以作为目标传递,矩形的topleft角将用作blit的位置。
  • 1
  • 2
  • 3
  • 4
  • 5

如果 dest 是一个位置矩形的话,就将其放置在其中心处

position = dog.get_rect()
# 为了控制将初始图像放置在screen的中心处
position.center = width //2,height //2   #整除获得图像中心位置
screen.blit(dog,position)	# 更新图像
  • 1
  • 2
  • 3
  • 4

二、示例

import pygame
import sys
from pygame.locals import *
pygame.init()
size = width,height = 600,400
bg = (255,255,255)
screen = pygame.display.set_mode(size)
pygame.display.set_caption("初次见面,请大家多多关照")
dog = pygame.image.load("dog.png")

# 使用 select 判断选择框状态,drag 判断拖拽的状态
# 0->未选择,1->选择中,2->完成选择
select = 0

# 0->未拖拽,1->拖拽中,2->完成拖拽
drag = 0

# Rect 用于存储直角坐标的pygame对象
# Rect(左,顶,宽,高) 这些属性可以控制一个矩形的位置,大小
select_rect = pygame.Rect(0,0,0,0)

# 获得图像的位置矩形
position = dog.get_rect()
# 为了控制将初始图像放置在screen的中心处
position.center = width //2,height //2 # 整除获得图像中心位置

# 设置为死循环,确保窗口一直显示
while True:
    # 遍历所有的事件
    for event in pygame.event.get():
        # 如果单击关闭窗口,则退出
        if event.type == pygame.QUIT:
            sys.exit()
        # 如果发生鼠标按下事件
        elif event.type == MOUSEBUTTONDOWN:
            # 鼠标摁下的两个属性,button(1:鼠标摁下)和pos(鼠标点击的坐标)
            if event.button == 1:
                # 第一次点击,选择范围
                if select == 0 and drag == 0:
                    pos_start = event.pos
                    select = 1
                # 第二次点击,拖拽图像
                elif select ==2 and drag == 0:
                    # subsurface 创建一个引用其父级的新表面
                    # 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:
            # button = 1 代表松开鼠标
            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(dog,position)

     # 实时绘制选择框
    if select:
        #pygame.mouse.get_pos():返回鼠标光标的位置X和Y位置。该位置相对于显示屏的左上角。
        mouse_pos = pygame.mouse.get_pos()
        if select == 1:
            pos_stop = mouse_pos
        # 选择框的 left 和 top 通过起始鼠标点击处确定选择框的位置
        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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88

结果图
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/376297
推荐阅读
相关标签
  

闽ICP备14008679号