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 (16 avis)

Vue 58 232 fois - Téléchargée 4 727 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

Finalement, l'executable est dans le zip avec l'extension .exe_

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.