PyGame图形绘制函数详解

文章目录

    • 五种图形
    • 矩形
    • 圆形

五种图形

除了直线之外,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.mzph.cn/news/225570.shtml

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

相关文章

Pytorch当中的.detach()操作是什么意思

.detach() 是 PyTorch 中用于从计算图中分离张量的方法。当我们在PyTorch中进行张量运算时,操作会构建一个计算图来跟踪计算历史,这个计算图用于自动求导和反向传播来计算梯度。 使用.detach()方法可以将一个张量从当前的计算图中分离出来,使…

如何实现填表后分配序列号、活动抢票抽奖、自助分配座位号?

📱发布者想要实现让用户在填表后自动分配序列号、座位号,或制作活动抢票抽奖系统,该如何实现? 📌使用教程 📖案例1:制作活动抽奖系统 使用预置数据分配的随机分配功能,以活动抽奖为例…

针对网页html中插入动图gif不能循环播放只播放一次的解决方案

针对网页html中插入动图gif不能循环播放只播放一次的解决方案 原因分析解决方案 原因分析 使用图片编辑软件制作的过程中未启用“循环播放”功能,这里以Photoshop为例,演示设置GIF图片循环播放的操作流程:所需材料:PS。第一步&am…

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

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

【go语言开发】本地缓存的使用,从简单到复杂写一个本地缓存,并对比常用的开源库

本文主要介绍go语言中本地缓存的使用,首先由简单到复杂手写3个本地缓存示例,使用内置的sync,map等数据结构封装cache,然后介绍常见的一些开源库,以及对比常用的开源库 文章目录 前言手写本地缓存CacheNormalCacheExCac…

基于单片机的太阳能数据采集系统(论文+源码)

1. 系统设计 在本次太阳能数据采集系统的设计中,以AT89C52单片机为主要核心,主要是由LCD液晶显示模块、存储模块、温度检测模块、串口通信模块,光照检测模块等组成,其实现了对太阳能板的温度,光照强度的检测和记录&…

SpringBoot2—开发实用篇3

目录 整合第三方技术 缓存 SpringBoot内置缓存解决方案 SpringBoot整合Ehcache缓存 SpringBoot整合Redis缓存 SpringBoot整合Memcached缓存 SpringBoot整合jetcache缓存 SpringBoot整合j2cache缓存 任务 Quartz Task 邮件 消息 Java处理消息的标准规范 购物订单…

git 常见错误总结(会不断更新中。。)

常见错误 1. 配置部署key后git clone还是拉不下代码 执行以下命令 先添加 SSH 密钥到 SSH 代理: 如果你使用 SSH 代理(例如 ssh-agent),将生成的私钥添加到代理中。 ssh-add ~/.ssh/gstplatrontend/id_rsa如果报错以下错误信息…

详谈前端中常用的加/密算法

本文主要详细介绍了在前端开发中常用的加/解密算法,以及前端如何实现。 总的来说:前端加密无论使用哪个加密都一样是有可能性被他人获取到相关的公钥或密钥的(比如:拦截请求、查看源代码等),然后进行加密与…

风速预测(五)基于Pytorch的EMD-CNN-LSTM模型

目录 前言 1 风速数据EMD分解与可视化 1.1 导入数据 1.2 EMD分解 2 数据集制作与预处理 2.1 先划分数据集,按照8:2划分训练集和测试集 2.2 设置滑动窗口大小为96,制作数据集 3 基于Pytorch的EMD-CNN-LSTM模型预测 3.1 数据加载&…

中医处方软件西医电子处方系统,一键生成处方单可设置配方模板教程

一、前言 有的诊所是中医和西医都有,医师是全科医师,那么所使用的软件既要能开中药处方也要能开西药处方,而且可以通过一键生成配方,则可以节省很多时间。 下面就以 佳易王诊所卫生室电子处方为例说明 如上图,如果是…

【C++】POCO学习总结(十七):日志系统(级别、通道、格式化、记录流)

【C】郭老二博文之:C目录 1、Poco::Message 日志消息 1.1 说明 所有日志消息都在Poco::Message对象中存储和传输。 头文件:#include “Poco/Message.h” 一条消息包含如下内容:优先级、来源、一个文本、一个时间戳、进程和线程标识符、可选…

微服务组件Sentinel的学习(2)

限流规则 流控模式直接模式关联模式链路模式 流控效果快速失败warm up排队等待 热点参数限流 流控模式 添加限流规则,可点击高级选项,有三种流控模式选择: 直接:统计当前资源的请求,触发闻值时对当前资源直接限流,也是…

Axure之动态面板轮播图

目录 一.介绍 二.好处 三.动态面板轮播图 四.动态面板多方式登录 五.ERP登录 六.ERP的左侧菜单栏 七.ERP的公告栏 今天就到这了哦!!!希望能帮到你了哦!!! 一.介绍 Axure中的动态面板是一个非常有用的组…

2024年视频监控行业发展趋势预测及EasyCVR视频分析技术应用

随着技术的改进,视频监控领域在过去十年迅速发展。与此同时,该行业正在通过先进创新技术(如人工智能和云计算等技术)的积极商业化,获得了新的增长机会。视频监控系统不再仅仅用于记录图像,而是已经成为全球…

力扣题目学习笔记(OC + Swift) 12. 整数转罗马数字

12. 整数转罗马数字 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XI…

LVM异常分析

环境信息 硬件环境 软件环境 相关软件包 云上鲲鹏RH220 操作系统:麒麟V10sp1-0711 系统自带多路径:multipath-tools-0.8.4-6 光纤连接华为存储Oceanstor18500 v5 内核版本:4.19.90 故障描述 云上鲲鹏RH220安装系统麒麟V10sp1-071…

ssm+vue的高校智能培训管理系统分析与设计(有报告)。Javaee项目,ssm vue前后端分离项目。

演示视频: ssmvue的高校智能培训管理系统分析与设计(有报告)。Javaee项目,ssm vue前后端分离项目。 项目介绍: 采用M(model)V(view)C(controller&#xff09…

npm ,yarn 更换使用国内镜像源,阿里源,清华大学源

在平时开发当中,我们经常会使用 Npm,yarn 来构建 web 项目。但是npm默认的源的服务器是在国外的,如果没有梯子的话。会感觉特别特别慢,所以,使用国内的源是非常有必要的。 在这里插入图片描述 Nnpm, yarn …

1130 - Host “WIN-CA4FHERGO9J‘ is not allowed to connect to this MySQL server

1、知识小课堂 1.1 Mysql MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,属于Oracle旗下产品。它是最流行的关系型数据库管理系统之一,在WEB应用方面,MySQL是最好的RDBMS (Relational Database Management System&am…