En ce moment je vois qu’un certain nombre de personnes postent sur les newsgroup pour trouver réponse à cette grande question, donc voici un petit exemple qui devrait y répondre clairement :
// Path vers l'image
String path = "...";
// Chargement de l'image à dessiner
Image image = Image.FromFile(path);
// Création du bitmap pour réaliser le dessin
Bitmap bmp = new Bitmap(
image.Width,
image.Height);
// Créatio ndu graphics pour dessiner
Graphics g = Graphics.FromImage(bmp);
// On dessine l'image
g.DrawImage(image, 0, 0);
// On ajoute un text
g.DrawString("Mon texte", this.Font, Brushes.Black, new PointF(0, 0));
bmp.Save(path);
Pour bien comprendre ce code, il fauter noter qu'image est une classe abstraite qui ne peut être instanciée par un new et bitmap n'a rien à voir avec les fameux fichier BMP, c'est l'objet utilisable pour tracer des images... ce sont des concepts à garder en tête pour comprendre GDI, et j'avoue que la première fois ce n'est pas évidant à comprendre.