Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Allegro Discussion :

Astuce avec allegro


Sujet :

Allegro

  1. #1
    Membre du Club
    Astuce avec allegro
    Bonsoir à tous

    Je cherche une méthode dans allegro qui me permet d'attribuer une image à un objet construit au lieu d'affecter une couleur avec makecol(0,50,255).
    rectfill(buffer, (r->x1_rect), (r->y1_rect), (r->x2_rect), (r->y2_rect),makecol(0,50,255));

    Et merci d'avance

  2. #2
    Membre confirmé
    Je ne comprends pas très bien ce que tu veux faire? Insérer des images?
    blit avec des sprites???

  3. #3
    Membre averti
    Si tu demandais cela uniquement pour les rectangles, ça aurait été simple. Mais avec les cercles, je ne vois pas.
    Au final, il faut savoir comment Allegro trace ses primitives. A mon humble avis, il utilise l'équation de la forme géométrique, et il affiche un pixel de la couleur donnée par point de coordonées (x,y) appartenant à la forme (le point (x, y) appartient à la forme si ses composantes x et y vérifient l'équation de la forme).
    Il suffirait de faire la même chose, sauf qu'à la place d'afficher le pixel de la couleur donnée en argument, il faudrait lui donner la couleur du pixel de la position (x, y) du bitmap donné.
    Cependant, il faudrait aussi s'intéresser aux dimensions de la forme et de l'image, car si l'image est plus petite que la forme affichée, que se passerait t-il ?

    Si j'avais à coder cette fonction, je donnerais en argument une valeur qui dirait si :
    - Il faut remplir toute la forme avec la texture donnée (au quel cas il faut penser à changer les dimensions du bitmap contenant la texture pour coïncider avec les dimensions de la forme) ;
    - Il faut répéter la texture si elle est trop petite par rapport à la surface à remplir ;

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    FONCTION forme texturée (propriétés de la forme, texture à appliquer, méthode d'application) :
    SI méthode d'application = tout remplir FAIRE
       calculer les dimensions (hauteur, largeur) prises par la forme une fois affichée
       agrandir le bitmap "texture à appliquer" à ces dimensions
       POUR tout les point (x, y) FAIRE
          SI point (x, y) appartient à forme à afficher FAIRE
             dessiner un pixel aux coordonnées (x, y) ayant pour couleur la couleur du pixel de coordonnées (x, y) du bitmap "texture à appliquer".
          FIN SI
       FIN POUR
    SINON SI méthode d'application = répéter texture
       POUR tout point (x, y) FAIRE
          SI point (x, y) appartient à forme à afficher FAIRE
             dessiner un pixel aux coordonnées (x, y) ayant pour couleur la couleur du pixel de coordonnées (x - largeur texture * partie entière(x / largeur texture), y - hauteur texture * partie entière(y / hauteur texture)) du bitmap "texture à appliquer".
          FIN SI
       FIN POUR
    FIN SI


    il faut coder autant de fonction que de forme désirés. La seule différence entre chaque fonction sera l'équation de la forme ( (x − a)² + (y − b)² = r² pour le cercle, par exemple).

    Voilà, bien que ce soit un peu tard...