Partage
  • Partager sur Facebook
  • Partager sur Twitter

optimisation carré

    15 septembre 2022 à 15:10:26

    Bonjour,

    j'ai créé une fonction qui dessine un carré avec le module kandinsky (juste en utilisant la fonction set_pixel).

    Je voulais savoir si quelqu'un avais une idée pour la rendre plus rapide.

    Voici mon code:

    def draw_square(x=0, y=0, size=4, thickness=1, color=(0, 0, 0)):
        for t in range(thickness):
            for line in range(4):
                for point in range(size):
                    set_pixel(x, y, color)
                    if line % 2:
                        y += 1 if line <= 1 else -1
                    else:
                        x += 1 if line <= 1 else -1
            x += 1
            y += 1
            size -= 2



    -
    Edité par ebdm13 15 septembre 2022 à 15:13:17

    • Partager sur Facebook
    • Partager sur Twitter
      15 septembre 2022 à 19:38:18

      peut-être en listant dans un premier temps les coordonnées des points puis une boucle parcourant cette liste pour l'affichage ?

      ou utiliser la fonction pygame.draw.rect (vu que le module dépend de pygame) 

      • Partager sur Facebook
      • Partager sur Twitter
        15 septembre 2022 à 19:48:22

        Dessine 4 pixels à la fois...
        • Partager sur Facebook
        • Partager sur Twitter

        Python c'est bon, mangez-en. 

          15 septembre 2022 à 20:05:49

          umfred a écrit:

          peut-être en listant dans un premier temps les coordonnées des points puis une boucle parcourant cette liste pour l'affichage ?

          ou utiliser la fonction pygame.draw.rect (vu que le module dépend de pygame) 


          se module est une reproduction de l'original (développé par Numworks), l'original n'est pas codé avec Pygame. De plus, je ne pense pas que lister tout les points soit plus efficace.

          josmiley a écrit:

          Dessine 4 pixels à la fois...

          je ne sais pas si c'est ce que tu voulais dire, mais c'est vrai que j'aurais pu dessiner les quatre côtés avec la fonction fill_rect
          ca demanderais seulement 4 itérations ...
          • Partager sur Facebook
          • Partager sur Twitter
            15 septembre 2022 à 20:50:30

            Avec une seule boucle on dessine 4 pixels, 1 par côté, à chaque itération.
            • Partager sur Facebook
            • Partager sur Twitter

            Python c'est bon, mangez-en. 

            Anonyme
              15 septembre 2022 à 20:52:38

              Salut !


              Et dessiner deux rectangles avec 

              fill_rect(x,y,width,height,black)

              le second (x+1, y+1, width-2, height-2, white)

              • Partager sur Facebook
              • Partager sur Twitter
                18 septembre 2022 à 12:50:41

                ErispoeLeNarvalo a écrit:

                Salut !


                Et dessiner deux rectangles avec 

                fill_rect(x,y,width,height,black)

                le second (x+1, y+1, width-2, height-2, white)


                j'avais fait ça au début, mais finalement j'ai changé,  car j'utilise cette fonction pour un tableau periodique dynamique pour ma calculatrice. Mais au final je pense que je vais utiliser cette solution, mais ça me force à redessiner toute la case au hover.
                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  18 septembre 2022 à 22:06:44

                  Sinon utiliser un autre module...
                  • Partager sur Facebook
                  • Partager sur Twitter

                  optimisation carré

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown