文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Pygame鼠标进行图片的移动与缩放怎么实现

2023-06-22 05:30

关注

本篇内容主要讲解“Pygame鼠标进行图片的移动与缩放怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Pygame鼠标进行图片的移动与缩放怎么实现”吧!

# -*- coding: UTF-8 -*-#!/usr/bin/env python3# @Time    : 2021.12# @Author  : 高二水令# @Software: 图层拖拽缩放import osimport sysimport pygamefrom pygame.locals import *class Background(pygame.sprite.Sprite):    def __init__(self, image_file, location):        pygame.sprite.Sprite.__init__(self)  #call Sprite initializer        self.image = pygame.image.load(image_file)        self.rect = self.image.get_rect()        self.rect.left, self.rect.top = location# 写一个函数,判断一个点是否在某个范围内# 点(x,y)# 范围 rect(x,y,w,h)def is_in_rect(pos, rect):    x, y = pos    rx, ry, rw, rh = rect    if (rx <= x <= rx+rw) and (ry <= y <= ry+rh):        return True    return Falsedef move_image(pic_bottom,pic_upper,ssn):#pic_bottom,pic_upper分别是背景图和上层拖拽图层,ssn是我自己设置的路径信息、不需要可以删去、需要直接运行可以改成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 = 600    myimage_y = 480    scale_ = pygame.image.load('.\\Avel_scale.tif')    scale_ = pygame.transform.scale(scale_, (70, 520))    scale_x = 632    scale_y = 0    screen.blit(BackGround.image, BackGround.rect)    screen.blit(scale_, (scale_x, scale_y))    screen.blit(myimage, (myimage_x, myimage_y))    pygame.display.set_caption('图像定标')    size = []    location = [0, 0]    image = pygame.image.load(pic_upper)    image_x = 100    image_y = 100    screen.blit(image,(image_x, image_y))    pygame.display.flip()    is_move = False    run_flag = True    while (run_flag==True):        for event in pygame.event.get():            if event.type == pygame.QUIT:                exit()            # 鼠标按下、让状态变成可以移动            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            # 鼠标弹起、让状态变成不可以移动            if event.type == pygame.MOUSEBUTTONUP:                is_move = False            # 鼠标移动对应的事件            if event.type == pygame.MOUSEMOTION:                if is_move:                    screen.fill((255, 255, 255))                    screen.blit(BackGround.image, BackGround.rect)                    x, y = event.pos                    image_w, image_h = image.get_size()                    # 保证鼠标在图片的中心                    image_y = y-image_h/2                    image_x = x-image_w/2                    screen.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()#鼠标按钮响应、是点击图片的位置范围进行跳转            if event.type == pygame.MOUSEBUTTONDOWN and myimage_x <= event.pos[0] <= myimage_x + 90 and \                    myimage_y <= event.pos[1] <= myimage_y + 40:  # 判断鼠标位置以及是否摁了下去#这里可以写按钮响应的功能                    pygame.quit()#关闭原来窗口                    #os.system('ui.py')                    run_flag = False#跳出循环(不然会报错)                    #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()

预览图大概是这样:

Pygame鼠标进行图片的移动与缩放怎么实现

如需直接运行就直接把def move_image(pic_bottom,pic_upper,ssn)这句改成if __name__ == '__main__':并把对应的值传进对应的位置去 

到此,相信大家对“Pygame鼠标进行图片的移动与缩放怎么实现”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯