Bibliothèque de dessin graphique style Logo/Tortue pour .NET 8.0 Windows Forms. Créez facilement des dessins, animations et jeux éducatifs avec une API simple inspirée du langage Logo. Inclut support des couches transparentes, formes géométriques, texte personnalisable et rendu haute qualité avec antialiasing.
$ dotnet add package TortueGraphiqueBibliothèque de dessin graphique style Logo/Tortue pour .NET 8.0 Windows Forms.
Créez facilement des dessins, des animations et des jeux éducatifs avec une API simple et intuitive inspirée du langage Logo.
dotnet add package TortueGraphique
Install-Package TortueGraphique
using TortueGraphique.Lib.Graphics;
using System.Drawing;
using System.Windows.Forms;
// Créer une tortue sur fond blanc (800x600)
using var tortue = new Tortue(800, 600);
// Dessiner un carré rouge
tortue.ChangerCouleur(Color.Red);
tortue.ChangerEpaisseur(3);
tortue.BaisserStylo();
for (int i = 0; i < 4; i++)
{
tortue.Avancer(100);
tortue.TournerDroite(90);
}
// Afficher dans un PictureBox
pictureBox.Image = tortue.ObtenirBitmap();
Un carré rouge de 100 pixels de côté avec un trait de 3 pixels d'épaisseur.
tortue.Avancer(100); // Avance de 100 pixels
tortue.Reculer(50); // Recule de 50 pixels
tortue.TournerDroite(90); // Tourne de 90° vers la droite
tortue.TournerGauche(45); // Tourne de 45° vers la gauche
tortue.DefinirAngle(0); // Définit l'angle absolu (0° = droite)
tortue.BaisserStylo(); // Active le dessin
tortue.LeverStylo(); // Désactive le dessin
tortue.ChangerCouleur(Color.Blue); // Change la couleur
tortue.ChangerCouleur(255, 0, 0); // Rouge en RGB
tortue.ChangerEpaisseur(5); // Change l'épaisseur du trait
tortue.AllerA(400, 300); // Téléporte sans tracer
tortue.AllerVers(400, 300); // Déplace en traçant (si stylo baissé)
tortue.Centrer(); // Revient au centre du canvas
tortue.Reinitialiser(); // Réinitialise position, angle et stylo
tortue.Carre(100); // Carré de 100 pixels de côté
tortue.Rectangle(150, 80); // Rectangle 150x80
tortue.Cercle(50); // Cercle de rayon 50
tortue.Polygone(6, 80); // Hexagone (6 côtés de 80px)
// Texte simple
tortue.Texte("Hello!", 24);
// Avec police personnalisée
tortue.Texte("Bonjour", 20, "Arial");
// Avec style
tortue.Texte("Bold", 18, "Arial", FontStyle.Bold);
// Avec couleur spécifique
tortue.Texte("Red", 16, "Arial", Color.Red);
// Point
tortue.Point(100, 100, Color.Red, diametre: 5);
tortue.Point(150, 150, 255, 0, 0, diametre: 10); // RGB
// Trait
tortue.Trait(0, 0, 100, 100, Color.Blue, TypeBoutTrait.Arrondi, epaisseur: 3);
Utilisez TortueCouche pour créer des dessins superposés avec fond transparent.
using TortueGraphique.Lib.Graphics;
using System.Drawing;
// Couche de fond (opaque)
using var fond = new Tortue(800, 600);
fond.ChangerCouleur(Color.Blue);
fond.Cercle(150);
// Couche transparente
using var couche = new TortueCouche(800, 600);
couche.ChangerCouleur(Color.FromArgb(128, 255, 0, 0)); // Rouge semi-transparent
couche.AllerA(400, 300);
couche.Carre(100);
// Fusionner les couches
Bitmap resultat = new Bitmap(fond.ObtenirBitmap());
using (Graphics g = Graphics.FromImage(resultat))
{
g.DrawImage(couche.ObtenirBitmap(), 0, 0);
}
pictureBox.Image = resultat;
using var tortue = new Tortue(800, 600);
tortue.BaisserStylo();
int[] couleurs = {
Color.Red.ToArgb(),
Color.Orange.ToArgb(),
Color.Yellow.ToArgb(),
Color.Green.ToArgb(),
Color.Blue.ToArgb(),
Color.Purple.ToArgb()
};
for (int i = 0; i < 360; i++)
{
tortue.ChangerCouleur(Color.FromArgb(couleurs[i % couleurs.Length]));
tortue.Avancer(i * 0.5f);
tortue.TournerDroite(59);
}
pictureBox.Image = tortue.ObtenirBitmap();
void DessinerArbre(Tortue tortue, float longueur, int profondeur)
{
if (profondeur == 0) return;
tortue.Avancer(longueur);
// Branche droite
tortue.TournerDroite(30);
DessinerArbre(tortue, longueur * 0.7f, profondeur - 1);
tortue.TournerGauche(30);
// Branche gauche
tortue.TournerGauche(30);
DessinerArbre(tortue, longueur * 0.7f, profondeur - 1);
tortue.TournerDroite(30);
tortue.Reculer(longueur);
}
// Utilisation
using var tortue = new Tortue(800, 600);
tortue.AllerA(400, 550);
tortue.DefinirAngle(90); // Vers le haut
tortue.ChangerCouleur(Color.Green);
tortue.BaisserStylo();
DessinerArbre(tortue, 100, 8);
Consultez le projet d'exemple JeuxBalle pour voir comment créer un jeu de casse-briques complet avec gestion des collisions et animations.
Ce projet est sous licence MIT.
Les contributions sont les bienvenues ! N'hésitez pas à :
Marc - Développeur passionné par la programmation graphique et l'éducation
Inspiré par le langage Logo et les tortues graphiques de Seymour Papert.
💡 Astuce : Utilisez using avec vos tortues pour libérer automatiquement les ressources !
using var tortue = new Tortue(800, 600);
// Pas besoin d'appeler Dispose() manuellement
Important : À partir de la version 2.0.0, le système de coordonnées a changé !
// Centre du canvas 800x600 était à (400, 300)
Tortue tortue = new Tortue(800, 600);
tortue.AllerA(400, 300); // Centre
// Centre du canvas est maintenant à (0, 0)
Tortue tortue = new Tortue(800, 600);
tortue.AllerA(0, 0); // Centre
tortue.Centrer(); // Ou utilisez Centrer()
Pour migrer votre code de v1.x vers v2.0 :
nouveauX = ancienX - largeur/2nouveauY = ancienY - hauteur/2Exemple pour un canvas de 800x600 :
AllerA(400, 300) devient AllerA(0, 0)AllerA(200, 150) devient AllerA(-200, -150)AllerA(600, 450) devient AllerA(200, 150)Dessinez des arcs de cercle courbes :
tortue.ArcDroite(90, 100); // Arc de 90° à droite, rayon 100
tortue.ArcGauche(180, 50); // Arc de 180° à gauche, rayon 50
Les arcs respectent l'état du stylo (levé/baissé).