赞
踩
pygame.mouse.get_pos()
:获取鼠标光标的位置,X坐标和Y坐标pygame.draw.rect()
:画一个矩形rect(surface,color,rect,width = 0)
surface:在此屏幕上绘制
color:要绘制的颜色,如果使用元组,则alpha值是可选的(RGB[A])
rect:要绘制的矩形,位置和尺寸(这个矩形具有:left,top,width,height)
width:用于线条粗细或表示要填充矩形(不要与rect参数的宽度值混淆)
返回:
一个矩形边界变化的像素,如果没有绘制任何东西,边界矩形的位置将是给定rect 参数的位置,其宽度和高度将为0
blit()
:将一个图像绘制到另一个blit(source,dest)
source:在此Surface上绘制源Surface。
dest:参数定位绘图。
Dest可以是表示源左上角的坐标对。
Rect也可以作为目标传递,矩形的topleft角将用作blit的位置。
如果 dest 是一个位置矩形的话,就将其放置在其中心处
position = dog.get_rect()
# 为了控制将初始图像放置在screen的中心处
position.center = width //2,height //2 #整除获得图像中心位置
screen.blit(dog,position) # 更新图像
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()
结果图:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。