Pygame编程(3)draw模块

news2024/11/20 0:22:47

draw模块

  • 函数
  • 实例

函数

  • pygame.draw.rect
    • 画一个矩形
    • rect(surface, color, rect) -> Rect
    • 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) -> Rect
  • pygame.draw.polygon
    • 画一个多边形
    • polygon(surface, color, points) -> Rect
    • polygon(surface, color, points, width=0) -> Rect
  • pygame.draw.circle
    • 画一个圆形
    • circle(surface, color, center, radius) -> Rect
    • circle(surface, color, center, radius, width=0, draw_top_right=None, draw_top_left=None, draw_bottom_left=None, draw_bottom_right=None) -> Rect
  • pygame.draw.ellipse
    • 画一个椭圆
    • ellipse(surface, color, rect) -> Rect
    • ellipse(surface, color, rect, width=0) -> Rect
  • pygame.draw.arc
    • 画一条椭圆弧
    • arc(surface, color, rect, start_angle, stop_angle) -> Rect
    • arc(surface, color, rect, start_angle, stop_angle, width=1) -> Rect
  • pygame.draw.line
    • 画一条直线
    • line(surface, color, start_pos, end_pos) -> Rect
    • line(surface, color, start_pos, end_pos, width=1) -> Rect
  • pygame.draw.lines
    • 绘制多个连续的直线段
    • lines(surface, color, closed, points) -> Rect
    • lines(surface, color, closed, points, width=1) -> Rect
  • pygame.draw.aaline
    • 画一条直的抗锯齿线
    • aaline(surface, color, start_pos, end_pos) -> Rect
    • aaline(surface, color, start_pos, end_pos, blend=1) -> Rect
  • pygame.draw.aalines
    • 绘制多个连续的直线抗锯齿线段
    • aalines(surface, color, closed, points) -> Rect
    • aalines(surface, color, closed, points, blend=1) -> Rect

实例

import sys
import math
import pygame
from pygame.locals import *

COLOR_BLACK = (0, 0, 0)
COLOR_WHITE = (255, 255, 255)
COLOR_RED   = (255, 0, 0)
COLOR_GREEN = (0, 255, 0)
COLOR_BLUE  = (0, 0, 255)

pygame.init()

screen = pygame.display.set_mode((700, 600), flags=0)

# 画一条直线
pygame.draw.line(screen, (255, 0, 0), (100, 10), (400, 20), width=5)

# 画一条抗锯齿直线
pygame.draw.aaline(screen, (255, 0, 0), (100, 50), (400, 60), blend=1)

# 画多条连续的直线
pygame.draw.lines(screen, (255, 0, 0), closed=False, points=[[400, 10], [420, 50], [450, 30], [420, 20]], width=1)

# 画多条连续的抗锯齿直线
pygame.draw.aalines(screen, (255, 0, 0), closed=True, points=[[400+60, 10], [420+60, 50], [450+60, 30], [420+60, 20]], blend=1)

# 画圆形, (线宽等于半径 即可画一个实心圆形)
pygame.draw.circle(screen, (255, 0, 0), (50, 80), 30,  5)
pygame.draw.circle(screen, (255, 0, 0), (50, 150), 30, 5, draw_top_left=True)
pygame.draw.circle(screen, (255, 0, 0), (50, 200), 30, 5, draw_top_right=True)
pygame.draw.circle(screen, (255, 0, 0), (50, 250), 30, 5, draw_bottom_left=True)
pygame.draw.circle(screen, (255, 0, 0), (50, 300), 30, 5, draw_bottom_right=True)

# 画矩形
pygame.draw.rect(screen, (255, 0, 0), rect=(100, 80, 100, 100))
pygame.draw.rect(screen, (255, 0, 0), rect=(250, 80, 100, 100), width=1)
pygame.draw.rect(screen, (0, 255, 0), rect=(400, 80, 100, 100), border_radius=15)
pygame.draw.rect(screen, (0, 255, 0), rect=(550, 80, 100, 100), width=2, border_radius=15)
pygame.draw.rect(screen, (0, 255, 0), rect=(100, 200, 100, 100), border_top_left_radius=15)
pygame.draw.rect(screen, (0, 255, 0), rect=(250, 200, 100, 100), border_top_right_radius=15)
pygame.draw.rect(screen, (0, 255, 0), rect=(400, 200, 100, 100), border_bottom_left_radius=15)
pygame.draw.rect(screen, (0, 255, 0), rect=(550, 200, 100, 100), border_bottom_right_radius=15)

# 画多边形
pygame.draw.polygon(screen, (0, 0, 255), points=[[100, 320],[200, 450], [250, 350]], width=0)
pygame.draw.polygon(screen, (0, 0, 255), points=[[250, 320],[350, 450], [400, 350]], width=3)
pygame.draw.polygon(screen, (0, 0, 255), points=[[250+150, 320],[350+150, 450], [400+150, 350], [400+200, 380]], width=3)

# 绘制椭圆
pygame.draw.ellipse(screen, (255, 255, 255), rect=(20, 400, 100, 50), width=0)
pygame.draw.ellipse(screen, (255, 255, 255), rect=(20, 480, 100, 50), width=2)


# 画一段弧形
rect_arc1 = pygame.draw.arc(screen, (255, 255, 0), rect=(100, 500, 100, 80), start_angle=0, stop_angle=(math.pi/180)*270, width=3)
print(rect_arc1)



# 更新显示
pygame.display.flip()
pygame.display.update()

while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()

        

在这里插入图片描述

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

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

相关文章

非常简单!用Java实现一个简单的向量数据库雏形。

概述 向量数据库是用来解决高维向量数据管理和查询的问题。它能够有效地存储、索引和查询大规模高维度向量数据,并提供高性能和高效的相似度搜索。传统的关系型数据库或文档数据库在处理高维向量数据时可能会遇到诸多问题。比如在高维空间中,数据点之间…

网红景区游乐设备普乐蛙5d动感影院体验馆设备组成内容

一个5D7D动感影院体验馆的全套设备组成通常包括以下几个方面: 电影播放设备:包括主控制器、电影播放器、电影储存设备等,用于播放5D电影。 影院座椅:一般采用特殊设计的动感座椅,具备震动、摇晃、抖动等功能&#xff0…

Mainline Linux 和 U-Boot编译

By Toradex胡珊逢 Toradex 自从 Linux BSP v6 开始在使用 32位处理器的 Arm 模块如 iMX6、iMX6ULL、iMX7 上提供 mainline/upstream kernel ,部分 64位处理器模块如 Verdin iMX8M Mini/Plus 也提供实验性支持。文章将以季度发布版本 Linux BSP V6.3.0 为例介绍如何下…

为什么选择新风机?

现如今,新风机已经是很多场地的熟客了,那大家可能疑惑为什么选择新风机呢?那就让我揭晓答案吧!新风机有很多益处,让我大致简述一下吧。 改善室内空气质量:新风机能够引入新鲜的外界空气,并排除室…

lab7 thread

文章目录 Uthread: switching between threadstaskhints思路上下文的恢复和保存thread_createthread_schedule Using threads思路 Barrier Uthread: switching between threads 在这个练习中,你将为一个用户级别线程系统设计上下文切换机制,并实现它。 …

算法leetcode|73. 矩阵置零(rust重拳出击)

文章目录 73. 矩阵置零:样例 1:样例 2:提示:进阶: 分析:题解:rust:go:c:python:java: 73. 矩阵置零: 给定一个 m x n 的矩…

邮件营销:高效的节日宣传方式

每个国家都有当地的传统节日,像是我国刚过去的端午节,即将迎来的中秋节、国庆节。我们除了会进行一些传统习俗外,各路商家还会趁这个机会开启促销活动。 对于公司来讲,抓住每一次营销活动都可能会带来更高的营销额,或…

ATA-7000系列高压放大器——应用场景介绍

ATA-7000系列是一款理想的可放大交、直流信号的高压放大器。单端输出20kVp-p(10kVp)高压,可以驱动高压型负载。电压增益数控可调,一键保存常用设置,为您提供了方便简洁的操作选择。 图:ATA-7000系列高压放大…

2021年长安杯电子数据取证比赛

VC挂载 一&二检材 长安杯-1 检材一 请计算检材一Apk的SHA256值 3fece1e93be4f422c8446b77b6863eb6a39f19d8fa71ff0250aac10f8bdde73a 长安杯-2 该APK的应用包名为 plus.H5B8E45D3 长安杯-3 APPID 该APK程序在封装服务商的应用唯一标识(APPID)为…

设计模式之抽象工厂

文章目录 一、介绍二、基本组件三、演示案例1. 定义抽象工厂2. 定义抽象产品3. 定义具体工厂4. 定义具体产品5. 代码演示6. 代码改造 四、总结 一、介绍 抽象工厂模式(Abstract Factory Pattern)属于创建型设计模式。用于解决比工厂方法设计模式更加复杂的问题。 复杂到哪里了…

U盘怎么加密?U盘加密方法有哪些?

U盘是我们生活和工作中最常用的移动储存设备,经常被用来存放各种重要数据,为了保证数据的安全,我们需要加密U盘。那么,U盘加密方法有哪些呢? U盘加密普通方法 如果你的U盘储存数据不多,并且对于加密的要求…

Orchestrator介绍三 命令行工具

Orchestrator-client orchestrator 支持两种方式通过命令行操作: 一种是 通过命令 orchestrator: 需要在服务器上安装 orchestrator,但是可以不作为服务启动。 需要配置orchestrator的文件,以便能够连接后端数据库 一种是通过…

Docker部署gogs仓库

Docker部署gogs Git仓库 拉取镜像 docker pull gogs/gogs查看本地镜像 docker images启动gogs仓库服务 创建数据挂在目录 我在/root目录下创建gogs挂在目录 mkdir gogs启动gogs docker run --namegogs -d -p 10022:22 -p 10880:3000 -v /root/gogs:/data gogs/gogs10022…

知识图谱Neo4j安装到实践全过程

前言: Hello大家好,我是Dream。 在本次实战中,我们将一起完成知识图谱Neo4j安装到实践全过程,探索其中的关系和属性。知识图谱是一种以三元组形式存储的数据结构,由实体、关系和属性组成,能够帮助我们更好地…

西部AI小镇-构建自主虚拟世界

背景 未来曜文有接入市场上所有面向chatGPT开发的应用,例如开源聊天组件,西部小镇等 内容介绍 生成代理起床,做早餐,然后去上班;艺术家作画,作家写作;他们形成意见、互相关注并发起对话&…

window如何实时刷新日志文件

1 安装windows git 下载地址:Git - Downloading Package (git-scm.com) 2 打开git bash 输入tail.exe -f 日志文件路径

yo!这里是Linux权限入门理解

目录 前言 权限概念 权限管理 分类 1.用户 2.文件&&目录 表示 设置 1.chmod指令 2.chown指令 3.chgrp指令 4.umask指令 粘滞位 后记 前言 对于Linux基本指令,基本上就是操作文件或者目录,但是,是谁可以操作文件或目录&…

8个月打磨,打造出的全能工具箱,让你事半功倍!

这款工具叫即时工具,目前有网页端和客户端可以下载至本地离线使用,区别在于客户端采用原生适配性能更好,网页端需要上传至服务器或浏览器内部处理。 体验地址:点击直达 一、为什么会开发这个工具 综合性和多功能性:…

MySQL数据库 索引、事务、储存引擎

索引 索引的概念 索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址(类似于C语言的链表通过指针指向数据记录的内存地址)。 使用索引后可以不用扫描全表来定位某行的数据,而是先通过索引表找…

harbor升级后镜像项目访问无权限问题

一、问题背景 将环境中现运行的harbor版本升级到2.6.2版本,相关同事升级完,发现有部分镜像项目点进去报无权限问题,镜像项目无法使用,但是也有部分项目是可以正常提供使用的。 二、问题处理过程 1、根据报错反馈没权限&#xff…