Commentçamarche.net
CodeS-SourceS
Rechercher un code, un tuto, une réponse

Générer et imprimer des billets (théâtre, cinema, concours, ...)

4/5 (12 avis)

Vue 59 012 fois - Téléchargée 4 967 fois

Description

Salut tout le monde;
J'ai un ami qui, pour son école, doit faire environ 500 billets de théâtre avec un numéro unique et les imprimer ensuite.
J'ai eu donc l'idée de faire ce programme qui sert à numéroter les billets et de les imprimer ensuite.
Il est très simple d'utilisation, voici les étapes à suivre:

1- Vous choisissez l'image du billet en arrière plan
2- Vous sélectionnez la zone d'affichage du nombre
3- Vous spécifiez la police (couleur et taille)
4- Vous spécifiez aussi le nombre de colonnes et l'espacement entre colonnes et lignes
5- Vous pouvez choisir ou non d'afficher les zéros à gauche du nombre

Source / Exemple :

le code est très long, j'ai donc choisi l'extrait suivant. le reste est dans le zip

using System;
using System.Windows.Forms;
using System.Drawing.Printing;
using System.Drawing;
using System.Drawing.Drawing2D;

/*...*/

private void DrawPage(int actualPage, Graphics g, Rectangle container)
{
 //rectangle qui définit la zone d'affichage du ticket
 Rectangle ticketRect = new Rectangle(container.X, container.Y, bmpWidth, bmpHeight);
 //rectangle qui définit la zone d'affichage du nombre
 Rectangle numberRect = displayNumberRect;
    numberRect.X += container.X; numberRect.Y += container.Y;
 //nombre du premier ticket de la page x
 int number = actualPage * nberOfLines * nberOfColumns + this.beginNumber;
 
 //on fait les colonnes, ligne par ligne
 //observez la disposition des boucles
 for(int i=0; i<this.nberOfLines; i++)
 {
  for(int j=0; j<this.nberOfColumns; j++)
  {
   //si on a atteint le dernier billet, on arrête
   if(number == this.numberOfTickets + this.beginNumber) break;
   //on dessine l'image du billet
   g.DrawImage(bmp, ticketRect);
   //string qui contient le chiffre
   string s = string.Format("{0}", number);
   //on ajoute les zéros à gauche si zeroLeft == true
   if(this.zeroLeft)
   {
    while(s.Length<this.nberZeroLeft+1)
    {
     s = s.Insert(0, "0");
    }
   }
   //on dessine le nombre
   g.DrawString(s, font, new SolidBrush(fontColor), numberRect, format);
   //g.DrawRectangle(new Pen(Color.Black), numberRect);
   //--------------------------------------------------
   //on place nos rectangles pour la deuxieme colonne
   ticketRect.X+= ticketRect.Width + this.spaceColumns;
   numberRect.X = ticketRect.X + displayNumberRect.X;
   number++;
  }
  //on place nos rectangles pour la ligne suivante
  ticketRect.X = container.X;
   numberRect.X = ticketRect.X + displayNumberRect.X;
  ticketRect.Y+= ticketRect.Height + this.spaceRows;
   numberRect.Y = ticketRect.Y + displayNumberRect.Y;
 }
}

Conclusion :

Merci à Shinta de m'avoir donner l'idée de faire ce programme
Si vous avez d'autres options à me suggérer, n'hésitez pas à le faire
Si vous trouvez des bugs, merci de me prévenir

Fichier exécutable supprimé par la modération pour non rexpect de la charte

Enjoy !!!

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.