cispo
Messages postés103Date d'inscriptionmardi 9 novembre 2004StatutMembreDernière intervention10 septembre 2007
-
21 oct. 2005 à 18:00
cs_Smalo
Messages postés36Date d'inscriptionlundi 3 janvier 2005StatutMembreDernière intervention11 décembre 2006
-
24 oct. 2005 à 15:13
Bonjour,
Je dois imprimer 2 formulaires. Appelons les Form A et Form B. Mais je rencontre 3 problèmes :
1. Ma Form A comprend essentiellement des labels. Pour ces labels,
j'utilise la police Arial (rien de bizarre donc), mais quand j'imprime,
les caractères ne sont pas nets et je vois pas d'ou ca peut venir
compte tenu que tout est normal à l'écran.
2. Comment faire pour que mon impression prenne toute la page (format A4 ?)
3. Quand l'impression de la Form A est finie, je dois lancer
l'impression de Form B automatiquement. Il faudrait donc que je trouve
un évènement qui m'indique quand ma Form B est complètement dessinée,
mais je n'ai pas trouvé :/
Pour info, pour imprimer j'utilise cette méthode :
PrintDocument pd = new PrintDocument();
Bitmap bmp;
private void capture()
{
pd.PrintPage += new PrintPageEventHandler(pd_PrintPage);
cs_Smalo
Messages postés36Date d'inscriptionlundi 3 janvier 2005StatutMembreDernière intervention11 décembre 2006 24 oct. 2005 à 15:12
Salut,
Tu n'utilise pas la bonne méthode pour imprimer :
" 1) mais quand j'imprime, les caractères ne sont pas nets et je vois pas d'ou ca peut venir..."
c'est normal car tu utilise l'impression d'une capture c'est à dire qu'il ne timprime pas le texte mais une image qui résulte d'un printscreen : d'ailleurs si tu ouvre avec adobe acrobat tu vera que le texte est bien en fait une image car tu ne peux pas le sélectionner.
"2. Comment faire pour que mon impression prenne toute la page (format A4 ?)" .. je comprend pas trop tu veux zoomer??
"3. Quand l'impression de la Form A est finie, je dois lancer l'impression de Form B automatiquement."
Avec l'autre méthode d'impression tu saura quand ce sera fini.
--->
alors voici un exemple :
tu crées une nouvelle classe.. moi j'utilise une windows form (je suis un flemard et c'est plus facile pour
faire glisser les printDocument de la boite à outils)
// le printDocument
public System.Drawing.Printing.PrintDocument monDocument;
// la boite de dialogue pour imprimer
public System.Windows.Forms.PrintDialog printDialog;
public
Form_impressionDesLabels(ArrayList list, UserControl_ZoneAuto u)
{
// sa les la liste des label à imprimer
this
.listeDeLabel = list;
I
nitializeComponent();
}
//ensuite on implémente l'événement printPage
private void monDocument_PrintPage(object
sender, System.Drawing.Printing.PrintPageEventArgs e)
{
SolidBrush brush;
StringFormat stringFormat = new StringFormat();
int locationX = 0;
// Maintenant on imprimer vraiment les labels :
foreach (LabelTexte l in this
.listeDeLabelTexte)
{
brush = new
SolidBrush(l.ForeColor);
// on repère l'alignement du label stringFormat.Alignment ((l.TextAlign ContentAlignment.TopRight) ||
(l.TextAlign == ContentAlignment.BottomRight)||
(l.TextAlign == ContentAlignment.MiddleRight)) ? StringAlignment.Far : StringAlignment.Near;
// on définit l'emplacement locationX stringFormat.Alignment StringAlignment.Far ? l.Location.X + l.Width : l.Location.X;
// ET LA ON LE DESSINE
e.Graphics.DrawString(l.Text,l.Font,brush,locationX,l.Location.Y,stringFormat);
}
}
Voila c'est pas plus compliqué que cela et en plus tu as vraiment imprimer le texte c'est pas une image salle,
tu verras en impriment avec acrobat tu pourras sélectionner le texte.
...pour ta troisième question tu as aussi un evenement EndPrint :
private void monDocument_EndPrint(object
sender, System.Drawing.Printing.PrintEventArgs e)
{
// Tu peux passer à autre chose !!
}