TortueGraphique 2.0.0
dotnet add package TortueGraphique --version 2.0.0
NuGet\Install-Package TortueGraphique -Version 2.0.0
<PackageReference Include="TortueGraphique" Version="2.0.0" />
<PackageVersion Include="TortueGraphique" Version="2.0.0" />
<PackageReference Include="TortueGraphique" />
paket add TortueGraphique --version 2.0.0
#r "nuget: TortueGraphique, 2.0.0"
#:package TortueGraphique@2.0.0
#addin nuget:?package=TortueGraphique&version=2.0.0
#tool nuget:?package=TortueGraphique&version=2.0.0
🐢 TortueGraphique
Bibliothè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.
✨ Fonctionnalités
- 🐢 API style Logo : Commandes intuitives (Avancer, Tourner, etc.)
- 🎨 Primitives de dessin : Points, traits, cercles, polygones, texte
- 🎭 Couches transparentes : Superposez plusieurs dessins
- ✨ Rendu haute qualité : Antialiasing et optimisation GDI+
- 🎨 Gestion des couleurs : Color, RGB, RGBA avec transparence
- 📐 Formes géométriques : Carré, rectangle, cercle, polygones réguliers
- 📝 Support du texte : Polices personnalisables, tailles, styles
- 🔄 Pattern Dispose : Gestion automatique des ressources
📦 Installation
Via .NET CLI
dotnet add package TortueGraphique
Via Package Manager Console
Install-Package TortueGraphique
Via Visual Studio
- Clic droit sur le projet → Gérer les packages NuGet
- Rechercher "TortueGraphique"
- Cliquer sur Installer
🚀 Démarrage rapide
Exemple simple : Dessiner un carré
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();
Résultat
Un carré rouge de 100 pixels de côté avec un trait de 3 pixels d'épaisseur.
📚 Documentation
Commandes de déplacement
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)
Gestion du stylo
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
Positionnement
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
Formes rapides
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
// 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);
Primitives de dessin
// 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);
🎭 Couches transparentes
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;
🎮 Exemple : Spirale colorée
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();
🎨 Exemples d'utilisation
Fractale : Arbre
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);
Jeu simple
Consultez le projet d'exemple JeuxBalle pour voir comment créer un jeu de casse-briques complet avec gestion des collisions et animations.
🛠️ Configuration requise
- .NET 8.0 ou supérieur
- Windows (utilise GDI+ via System.Drawing)
- Windows Forms pour l'affichage
📄 Licence
Ce projet est sous licence MIT.
🤝 Contribution
Les contributions sont les bienvenues ! N'hésitez pas à :
- Signaler des bugs
- Proposer de nouvelles fonctionnalités
- Soumettre des pull requests
👤 Auteur
Marc - Développeur passionné par la programmation graphique et l'éducation
🙏 Remerciements
Inspiré par le langage Logo et les tortues graphiques de Seymour Papert.
📝 Changelog
Version 1.0.0 (2025-01-21)
- 🎉 Première version publique
- ✨ API complète de dessin style Logo
- 🎭 Support des couches transparentes
- 📝 Support du texte avec polices personnalisées
- 🎨 Rendu haute qualité avec antialiasing
- 🔄 Pattern IDisposable pour gestion des ressources
💡 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
🔄 Version 2.0.0 - Breaking Change
**Important 😗* À partir de la version 2.0.0, le système de coordonnées a changé !
Avant (v1.x)
// Centre du canvas 800x600 était à (400, 300)
Tortue tortue = new Tortue(800, 600);
tortue.AllerA(400, 300); // Centre
Maintenant (v2.x)
// Centre du canvas est maintenant à (0, 0)
Tortue tortue = new Tortue(800, 600);
tortue.AllerA(0, 0); // Centre
tortue.Centrer(); // Ou utilisez Centrer()
Migration
Pour migrer votre code de v1.x vers v2.0 :
- Coordonnées X :
nouveauX = ancienX - largeur/2 - Coordonnées Y :
nouveauY = ancienY - hauteur/2
Exemple pour un canvas de 800x600 :
AllerA(400, 300)devientAllerA(0, 0)AllerA(200, 150)devientAllerA(-200, -150)AllerA(600, 450)devientAllerA(200, 150)
✨ Nouveautés v2.0.0
Méthodes ArcDroite et ArcGauche
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é).
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0-windows7.0 is compatible. net9.0-windows was computed. net10.0-windows was computed. |
-
net8.0-windows7.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version 2.0.0 (BREAKING CHANGE) :
- Nouveau système de coordonnées : (0, 0) est maintenant au centre du canvas
- Ajout des méthodes ArcDroite() et ArcGauche() pour dessiner des arcs courbes
- Les arcs respectent maintenant l'état du stylo (levé/baissé)
- Amélioration de la cohérence avec les autres méthodes de déplacement
ATTENTION : Migration nécessaire - les anciennes coordonnées doivent être ajustées