Comment utiliser la méthode de dessin Draw de Pygame en Python

WBOY
Libérer: 2023-04-19 16:46:06
avant
2232 Les gens l'ont consulté

Pygame's Draw

Pygame fournit un module de dessin pour dessiner des formes graphiques simples, telles que des rectangles, des polygones, des cercles, des lignes droites, des arcs, etc.

Les méthodes courantes du module pygame.draw sont présentées dans le tableau suivant :

pygame.draw.rect() 
Nom Description
pygame.draw.rect() 绘制矩形
pygame.draw.polygon()  绘制多边形
pygame.draw.circle()  根据圆心和半径绘制圆形
pygame.draw.ellipse()  绘制一个椭圆形
pygame.draw.arc()  绘制弧线(挥着椭圆的一部分)
pygame.draw.line()  绘制线段(直线)
pygame.draw.lines()  绘制多条连续的线段
pygame.draw.aaline()  绘制一条平滑的线段(抗锯齿)
pygame.draw.aalines()  绘制多条连续的线段

表格中的函数使用方法大同小异,它们都可以在 Surface 对象上绘制一些简单的形状,返回值是一个 Rect 对象,表示实际绘制图形的矩形区域。上述绘图函数都提供了一个 color 参数,我们可以通过以下三种方式来传递 color 参数值:

  • pygame.color 对象

  • RGB 三元组

  • RGBA 四元组

下面通对上述一些方法的参数进行详细说明:

绘制矩形

绘制矩形的语法格式如下:

pygame.draw.rect(surface, color, rect, width)
Copier après la connexion

参数说明如下:

  • surface :指主游戏窗口,无特殊情况,一般都会绘制在主屏幕上;

  • color :该参数用于该图形着色;

  • rect :绘制图形的位置和尺寸大小;

  • width :可选参数,指定边框的宽度,默认为 0,表示填充该矩形区域。

注意,当 width > 0 时,表示线框的宽度;而 width < 0 时,此时不会绘制任何图形。

绘制多边形

pygame.draw.polygon(surface, color, points, width)
Copier après la connexion

参数说明如下

  • points: 一个列表参数,它表示组成多边形顶点的 3 或者多个 (x,y) 坐标,通过元组或者列表来表示这些多边形顶点。

  • 其余参数与上述函数相同。

绘制圆形

pygame.circle(surface, color, pos, radius, width=0)
Copier après la connexion

参数说明如下

  • pos :该参数用来指定的圆心位置;

  • radius :用来指定圆的半径;

  • 其余参数与上述函数相同。

绘制椭圆形

pygame.draw.ellipse(surface, color, Rect, width=0)
Copier après la connexion

绘制椭圆形的过程,其实就是在矩形区域内部(Rect)绘制一个内接椭圆形

参数说明如下

  • 其余参数与上述函数相同。

绘制圆弧曲线

pygame.draw.arc(Surface, color, Rect, start_angle, stop_angle, width=1)
Copier après la connexion

绘制椭圆形的过程,其实就是在矩形区域内部(Rect)绘制一个内接椭圆形
参数说明如下

  • start_angle : 是该段圆弧的起始角度;

  • stop_angle : 是终止角度;

  • 其余参数与上述函数相同。

绘制直线

pygame.draw.line(surface, color, start_pos, end_pos, width=1)
Copier après la connexion

参数说明如下

  • start_pos : 是该线段的开始位置;

  • end_pos : 是该线段的结束位置;;

  • 其余参数与上述函数相同。

如果是绘制一条消除锯齿的平滑线,此时则使用 blend = 1 参数,如下所示:

pygame.aaline(surface, color, startpos, endpos, blend=1)
Copier après la connexion

blend 参数表示通过绘制混合背景的阴影来实现抗锯齿功能。

绘制多条直线

参数说明如下

  • pointlist : 参数值为列表,包含了一些列点坐标的列表;

  • closed Dessinez un rectangle

  • pygame.draw.polygon()

    Dessinez des polygones

pygame.draw.circle() < /td>

Dessinez un cercle en fonction du centre et du rayon

pygame.draw.ellipse()

Dessinez une ellipse

🎜🎜pygame.draw.arc() 🎜Dessiner un arc (en agitant une partie de l'ellipse)🎜🎜🎜pygame.draw.line() 🎜Dessiner des segments de ligne (lignes droites)🎜🎜🎜pygame.draw.lines() 🎜Dessiner plusieurs segments de ligne continue🎜🎜🎜 pygame.draw.aaline() 🎜Dessiner un segment de ligne lisse (anti-aliasing) 🎜🎜🎜pygame.draw.aalines() 🎜Dessinez plusieurs segments de ligne continue🎜🎜Les méthodes d'utilisation des fonctions du tableau sont similaires. Elles peuvent toutes dessiner des formes simples sur la surface. objet. La valeur de retour est un objet Rect, représentant la zone rectangulaire où le graphique est réellement dessiné. Les fonctions de dessin ci-dessus fournissent toutes un paramètre de couleur. Nous pouvons transmettre la valeur du paramètre de couleur des trois manières suivantes : 🎜
    🎜🎜pygame.color object🎜 🎜🎜🎜RVB Triplets🎜🎜🎜🎜RGB Quadruples🎜🎜🎜🎜Les paramètres de certaines des méthodes ci-dessus sont expliqués en détail ci-dessous : 🎜

    Dessiner un rectangle< /h4>🎜Le format de syntaxe pour dessiner un rectangle est le suivant : 🎜
    pygame.draw.aalines(surface, color, closed, pointlist, blend=1)
    Copier après la connexion
    🎜La description du paramètre est la suivante : 🎜
      🎜🎜surface : fait référence à la fenêtre principale du jeu, aucun Dans des cas particuliers, il est généralement dessiné sur l'écran principal 🎜🎜🎜🎜color : Ce paramètre est utilisé pour colorer le graphique 🎜🎜🎜🎜rect ;  : La position et la position du graphique dessiné. Taille ; 🎜🎜🎜🎜width : Paramètre facultatif, spécifiant la largeur de la bordure, la valeur par défaut est 0, ce qui signifie remplir la zone rectangulaire. 🎜🎜🎜
      🎜Notez que lorsque la largeur > 0, cela indique la largeur du filaire et lorsque la largeur < 🎜

      Dessiner un polygone

      import pygame
      from math import pi
      
      # 初始化
      pygame.init()
      # 设置主屏幕大小
      size = (500, 450)
      screen = pygame.display.set_mode(size)
      # 设置标题
      pygame.display.set_caption("Python自学网")
      # 设置一个控制主循环的变量
      done = False
      # 创建时钟对象
      clock = pygame.time.Clock()
      while not done:
          # 设置游戏的fps
          clock.tick(10)
          for event in pygame.event.get():
              if event.type == pygame.QUIT:
                  done = True  # 若检测到关闭窗口,则将done置为True
          # 绘制一条宽度为 3 的红色对角线
          pygame.draw.line(screen, (0, 255, 0), [0, 0], (500, 450), 3)
          # 绘制多条蓝色的直线(连续直线,非抗锯齿),False 表示首尾不相连
          pygame.draw.lines(screen, (0, 0, 255), False, [[0, 80], [50, 90], [200, 80], [220, 30]], 1)
          # 绘制一个灰色的矩形区域,以灰色填充区域
          pygame.draw.rect(screen, (155, 155, 155), (75, 10, 50, 20), 0)
          # 绘制一个线框宽度为2的矩形区域
          pygame.draw.rect(screen, (0, 0, 0), [150, 10, 50, 20], 2)
          # 绘制一个椭圆形,其线宽为2
          pygame.draw.ellipse(screen, (255, 0, 0), (225, 10, 50, 20), 2)
          # 绘制一个实心的红色椭圆形
          pygame.draw.ellipse(screen, (255, 0, 0), (300, 10, 50, 20))
          # 绘制一个绿色边框(宽度为2)三角形
          pygame.draw.polygon(screen, (100, 200, 45), [[100, 100], [0, 200], [200, 200]], 2)
          # 绘制一个蓝色实心的圆形,其中[60,250]表示圆心的位置,40为半径,width默认为0
          pygame.draw.circle(screen, (0, 0, 255), [60, 250], 40)
          # 绘制一个圆弧,其中0表示弧线的开始位置,pi/2表示弧线的结束位置,2表示线宽
          pygame.draw.arc(screen, (255, 10, 0), (210, 75, 150, 125), 0, pi / 2, 2)
          # 刷新显示屏幕
          pygame.display.flip()
      # 点击关闭,退出pygame程序
      pygame.quit()
      Copier après la connexion
      🎜Les paramètres sont décrits comme suit🎜
        🎜🎜points : un paramètre de liste, qui représente la composition de 3 coordonnées ou plus (x, y) de sommets de polygone, représentés par des tuples ou des listes. 🎜🎜🎜🎜Les paramètres restants sont les mêmes que la fonction ci-dessus. 🎜🎜🎜

        Dessine un cercle

        rrreee🎜Les paramètres sont expliqués comme suit🎜
          🎜🎜pos : Ce paramètre est utilisé pour spécifiez la position centrale du cercle ;🎜🎜🎜🎜rayon : utilisé pour spécifier le rayon du cercle 🎜🎜🎜🎜Les paramètres restants sont les mêmes que la fonction ci-dessus ; 🎜🎜🎜

          Dessiner une ellipse

          rrreee🎜Le processus de dessin d'une ellipse consiste en fait à dessiner une ellipse inscrite à l'intérieur de la zone rectangulaire (Rect)🎜🎜Les paramètres sont expliqués comme suit🎜
            🎜🎜Les paramètres restants sont les mêmes que la fonction ci-dessus. 🎜🎜🎜

            Dessiner des courbes d'arc

            rrreee🎜Le processus de dessin d'une ellipse consiste en fait à dessiner une ellipse inscrite à l'intérieur de la zone rectangulaire (Rect)
            Les paramètres sont expliqués comme suit🎜
              🎜🎜start_angle : est l'angle de départ de l'arc ; 🎜🎜🎜🎜stop_angle : est l'angle final ; 🎜🎜🎜🎜le reste Les paramètres sont les mêmes que la fonction ci-dessus. 🎜🎜🎜

              Trace une ligne droite

              rrreee🎜Les paramètres sont expliqués comme suit🎜
                🎜🎜start_pos  : est la position de départ du segment de ligne ;🎜🎜 🎜🎜end_pos  : est la position finale du segment de ligne 🎜🎜🎜🎜Les paramètres restants sont les mêmes que la fonction ci-dessus ; 🎜🎜🎜🎜Si vous tracez une ligne lisse pour éliminer l'alias, utilisez le paramètre blend = 1, comme indiqué ci-dessous : 🎜rrreee🎜le paramètre blend indique que la fonction d'anti-aliasing est obtenue en dessinant une ombre de l'arrière-plan mélangé. 🎜

                Tracez plusieurs lignes droites

                🎜La description du paramètre est la suivante🎜
                  🎜🎜pointlist  : La valeur du paramètre est une liste, incluant un certain nombre de points. Liste de coordonnées ; 🎜🎜🎜🎜fermé  : paramètre booléen, s'il est défini sur True, cela signifie que le premier point d'extrémité de la droite et le dernier point d'extrémité de la droite doivent être connecté bout à bout ; 🎜🎜🎜🎜Autres paramètres Identique à la fonction ci-dessus. 🎜🎜🎜🎜Si vous tracez une ligne droite anti-aliasée, utilisez la méthode suivante : 🎜rrreee🎜Sauf que blend = 1 est spécifié, la signification des paramètres restants est la même que celle de la fonction ci-dessus. 🎜🎜La méthode de dessin ci-dessus est démontrée ci-dessous à travers un ensemble d'exemples simples : 🎜rrreee

      Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!