pygame鼠标进行拖拽移动图片、缩放、以及按钮响应 案例
生活随笔
收集整理的這篇文章主要介紹了
pygame鼠标进行拖拽移动图片、缩放、以及按钮响应 案例
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
pygame鼠標(biāo)進(jìn)行拖拽移動(dòng)圖片、縮放、以及按鈕響應(yīng) 案例
# -*- coding: UTF-8 -*- #!/usr/bin/env python3 # @Time : 2021.12 # @Author : 高二水令 # @Software: 圖層拖拽縮放 import os import sys import pygame from pygame.locals import *class Background(pygame.sprite.Sprite):def __init__(self, image_file, location):pygame.sprite.Sprite.__init__(self) #call Sprite initializerself.image = pygame.image.load(image_file)self.rect = self.image.get_rect()self.rect.left, self.rect.top = location # 寫一個(gè)函數(shù),判斷一個(gè)點(diǎn)是否在某個(gè)范圍內(nèi) # 點(diǎn)(x,y) # 范圍 rect(x,y,w,h) def is_in_rect(pos, rect):x, y = posrx, ry, rw, rh = rectif (rx <= x <= rx+rw) and (ry <= y <= ry+rh):return Truereturn False def move_image(pic_bottom,pic_upper,ssn): #pic_bottom,pic_upper分別是背景圖和上層拖拽圖層,ssn是我自己設(shè)置的路徑信息、不需要可以刪去、需要直接運(yùn)行可以改成main()pygame.init()screen = pygame.display.set_mode((710, 520))BackGround = Background(pic_bottom, [0, 0])screen.fill((255, 255, 255))myimage = pygame.image.load('.\\next.png')myimage = pygame.transform.scale(myimage, (90, 40))myimage_x = 600myimage_y = 480scale_ = pygame.image.load('.\\Avel_scale.tif')scale_ = pygame.transform.scale(scale_, (70, 520))scale_x = 632scale_y = 0screen.blit(BackGround.image, BackGround.rect)screen.blit(scale_, (scale_x, scale_y))screen.blit(myimage, (myimage_x, myimage_y))pygame.display.set_caption('圖像定標(biāo)')size = []location = [0, 0]image = pygame.image.load(pic_upper)image_x = 100image_y = 100screen.blit(image,(image_x, image_y))pygame.display.flip()is_move = Falserun_flag = Truewhile (run_flag==True):for event in pygame.event.get():if event.type == pygame.QUIT:exit()# 鼠標(biāo)按下、讓狀態(tài)變成可以移動(dòng)if event.type == pygame.MOUSEBUTTONDOWN:w,h = image.get_size()if is_in_rect(event.pos, (image_x, image_y, w, h)):is_move = True# 鼠標(biāo)彈起、讓狀態(tài)變成不可以移動(dòng)if event.type == pygame.MOUSEBUTTONUP:is_move = False# 鼠標(biāo)移動(dòng)對(duì)應(yīng)的事件if event.type == pygame.MOUSEMOTION:if is_move:screen.fill((255, 255, 255))screen.blit(BackGround.image, BackGround.rect)x, y = event.posimage_w, image_h = image.get_size()# 保證鼠標(biāo)在圖片的中心image_y = y-image_h/2image_x = x-image_w/2screen.blit(scale_, (scale_x, scale_y))screen.blit(myimage, (myimage_x, myimage_y))screen.blit(image, (image_x, image_y))#print(image.get_rect())location[0]=event.pos[0]location[1] = event.pos[1]print(event.pos)pygame.display.update()#鼠標(biāo)按鈕響應(yīng)、是點(diǎn)擊圖片的位置范圍進(jìn)行跳轉(zhuǎn)if event.type == pygame.MOUSEBUTTONDOWN and myimage_x <= event.pos[0] <= myimage_x + 90 and \myimage_y <= event.pos[1] <= myimage_y + 40: # 判斷鼠標(biāo)位置以及是否摁了下去#這里可以寫按鈕響應(yīng)的功能pygame.quit()#關(guān)閉原來窗口#os.system('ui.py')run_flag = False#跳出循環(huán)(不然會(huì)報(bào)錯(cuò))#sys.exit()#滾輪縮放if event.type == MOUSEWHEEL:screen.fill((255, 255, 255))screen.blit(BackGround.image, BackGround.rect)image_width = image.get_width()image_heigt = image.get_height()image = pygame.transform.scale(image, (image_width + event.y * image_width / image_heigt * 10, image_heigt + event.y * 10))screen.blit(scale_, (scale_x, scale_y))screen.blit(myimage, (myimage_x, myimage_y))screen.blit(image, (image_x, image_y))#print(event)print(image_width, image_heigt)#print(event.flipped)pygame.display.update() move_image(pic_bottom,pic_upper,ssn)#這里傳值調(diào)用預(yù)覽圖大概是這樣:
如有需要關(guān)于疊圖、拼圖、透明度代碼在這里:python PIL Image 圖片疊圖、拼接,圖片透明度調(diào)整
如果對(duì)你有幫助的話就點(diǎn)個(gè)贊吧
總結(jié)
以上是生活随笔為你收集整理的pygame鼠标进行拖拽移动图片、缩放、以及按钮响应 案例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 姆吉拉假面 时间不够怎么办_丰田如何指导
- 下一篇: AdapterViewFlipper实现