PythonGame图形绘制函数详解

文章目录

    • 五种图形
    • 矩形
    • 圆形

五种图形

除了直线之外,pygame中提供了多种图形绘制函数,除了必要的绘图窗口、颜色以及放在最后的线条宽度之外,它们的参数如下表所示

函数图形参数/类型
rect矩形Rect
ellipse椭圆Rect
arc椭圆弧Rect, st, ed
circle圆形center, radius
polygon多边形points

从参数类别可以看出,矩形和椭圆的绘图逻辑是一致的,可以理解为,用矩形约束创造的椭圆,即矩形的内切椭圆;而椭圆弧也无非是多了个起止角度而已。

圆形和多边形则不然,前者通过圆心和半径,后者则根据一组点集。下面集中展示一下这几种绘图函数的基本用法。

import pygame
from pygame.draw import *pygame.init()
screen = pygame.display.set_mode((640, 360))pts = [(400, 0), (450, 100), (500, 0), (600, 100),(620, 300), (450, 350)]
while True:if pygame.QUIT in [e.type for e in pygame.event.get()]:pygame.quit()breakscreen.fill("purple")rect(screen, "green", pygame.Rect(10, 30, 100, 300))ellipse(screen, "red", pygame.Rect(120, 30, 100, 300))arc(screen, "black", pygame.Rect(230, 30, 100, 300), 0, 4.5)circle(screen, "blue", pygame.Vector2(360, 180), 40)polygon(screen, "pink", pts)pygame.display.flip()

效果如下

在这里插入图片描述

矩形

矩形在pygame中是非常基础的图形,使用场景也非常多,其优势在于,可以非常便捷地判断两个物体是否发生了碰撞。其完整的参数列表如下

rect(surface, color, rect, width=0, border_radius=0, border_top_left_radius=-1, border_top_right_radius=-1, border_bottom_left_radius=-1, border_bottom_right_radius=-1)

其中,额外出现的5个以radius结尾的参数,可用于设置矩形的圆角。示例如下

pygame.init()
screen = pygame.display.set_mode((640, 360))
while True:if pygame.QUIT in [e.type for e in pygame.event.get()]:pygame.quit()breakscreen.fill("purple")rect(screen, "green", pygame.Rect(50, 30, 200, 300), border_radius=10)rect(screen, "red", pygame.Rect(280, 30, 300, 300),border_top_left_radius=10, border_top_right_radius=40, border_bottom_left_radius=80, border_bottom_right_radius=160)pygame.display.flip()

效果如下

在这里插入图片描述

圆形

圆形与矩形相似,除了基础的绘图参数外,也提供了4个可定制的参数。

circle(surface, color, center, radius, width=0, draw_top_right=None, draw_top_left=None, draw_bottom_left=None, draw_bottom_right=None)

这四个参数均为布尔类型,用于控制圆形的四个角,若均不指定,则无影响。若指定其中某个参数为True,则将只绘制这个方向的四分之一圆弧,示例如下

pygame.init()
screen = pygame.display.set_mode((640, 360))
while True:if pygame.QUIT in [e.type for e in pygame.event.get()]:pygame.quit()breakscreen.fill("purple")circle(screen, (1, 136, 225), pygame.Vector2(320, 180), 150,draw_top_left=True, draw_bottom_right=True)circle(screen, "white", pygame.Vector2(320, 180), 150,draw_top_right=True, draw_bottom_left=True)pygame.display.flip()

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/278605.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

拼多多买家页面批量导出订单excel

拼多多买家页面批量导出订单excel 由于拼多多不支持订单导出excel清算起来很麻烦,就自己写了一个页面批量导出脚本代码。 首先打开拼多多手机端网站:https://mobile.pinduoduo.com/ 登录后点击我的订单打开f12审查元素 在控制台引入jquery,引…

Python等比例缩放图片并修改对应的Labelme标注文件(v2.0)

Python等比例缩放图片并修改对应的Labelme标注文件(v2.0) 前言前提条件相关介绍实验环境Python等比例缩放图片并修改对应的Labelme标注文件Json文件代码实现输出结果 前言 此版代码,相较于Python等比例缩放图片并修改对应的Labelme标注文件&a…

巴贝拉葡萄酒是单一品种还是混合品种制成的?

大多数巴贝拉葡萄酒都是由单一的巴贝拉葡萄品种制成的,许多意大利葡萄酒商开始尝试在巴贝拉葡萄酒中加入其它葡萄品种,其中两个最受欢迎的意大利品种是皮埃蒙特的巴贝拉德阿尔巴和达斯蒂。和朋友在一家意大利餐厅吃饭,被酒单吓到了&#xff1…

YOLOv8改进 | Conv篇 | 轻量级下采样方法ContextGuided(涨点幅度)

一、本文介绍 本文给大家带来的是改进机制是一种替换Conv的模块Context Guided Block (CG block) ,其是在CGNet论文中提出的一种模块,其基本原理是模拟人类视觉系统依赖上下文信息来理解场景。CG block 用于捕获局部特征、周围上下文和全局上下文&#…

Linux环境下安装JDK

本文将介绍在Linux环境下,如何安装JDK 1.用yum方式安装(无需配置环境变量) 检索yum中有没有java1.8的包:yum list java-1.8*安装:yum install java-1.8.0-openjdk* -y检查是否安装合适 2. 用JDK安装包安装 查看是否已经安装JDK&#xff1…

RabbitMQ插件详解:rabbitmq_message_timestamp【Rabbitmq 五】

欢迎来到我的博客,代码的世界里,每一行都是一个故事 RabbitMQ时空之旅:rabbitmq_message_timestamp的奇妙世界 前言什么是rabbitmq_message_timestamprabbitmq_message_timestamp 的定义与作用:如何在 RabbitMQ 中启用消息时间戳&…

寒冷冬天,再次撕下了新能源汽车的续航遮羞布,北方真不适合

随着懂车帝的冬测,新能源汽车的冬天续航成为关注焦点,电池性能在冬天里缩减众所周知,不过从来没有机构告诉消费者,到底冬天电池的续航会减少多少,如今这一切显然暴露在人们眼前了。 懂车帝的冬测显示除了特别优秀的新能…

YOLOv8 | 代码逐行解析(一) | 项目目录构造分析

一、本文介绍 Hello,大家好这次给大家带来的不是改进,是整个YOLOv8项目的分析,整个系列大概会更新7-10篇左右的文章,从项目的目录到每一个功能代码的都会进行详细的讲解,同时YOLOv8改进系列也突破了三十篇文章&#x…

探索Linux服务器配置信息的命令

目录 前言1 uname2 lscpu3 free4 df5 lspci6 lsusb7 lshw结语 前言 Linux系统提供了许多命令,用于获取和查看服务器的软硬件配置信息。这些命令可以帮助管理员和用户了解系统的状态、资源使用情况以及硬件设备的相关信息。以下是一些常用的命令以及它们的作用、使用…

C语言--clock()时间函数【详细介绍】

一.clock()时间函数介绍 在 C/C 中,clock() 函数通常用于处理和测量程序运行时间(时钟时间)。它是一种数据类型,表示 CPU 执行指定任务所耗费的“时钟计数”数量,单位为“时钟周期”。 这个函数通常包含在 time.h 头文…

Next.js加载异步组件 骨架屏

Next.js 中有两种处理页面加载的方式,一种是 Loading UI 一种是 Streaming。接下来我将介绍这两种的区别,以及实际的业务场景。 当我们进入某个页面时,需要获取页面数据,可能是从数据库读取也有可能是 API 服务,总之这…

iOS_给View的部分区域截图 snapshot for view

文章目录 1.将整个view截图返回image:2.截取view的部分区域,返回image:3.旧方法:4.Tips参考: 1.将整个view截图返回image: 这些 api 已被废弃,所以需要判断 iOS 版本 写两套代码: R…