PrintDialog ok, PrintPreviewDialog mauvais. Travail en mm ?

brixi69 Messages postés 44 Date d'inscription mardi 13 juin 2006 Statut Membre Dernière intervention 31 mars 2008 - 28 déc. 2006 à 16:57
brixi69 Messages postés 44 Date d'inscription mardi 13 juin 2006 Statut Membre Dernière intervention 31 mars 2008 - 29 déc. 2006 à 11:39
Bonjour !

Je fais appel à ceux qui ont déjà travaillé avec PrintPreviewDialog et le PrintDialog.

J'aimerais faire un truc tout simple mais je rame.
J'ai une image que j'aimerais imprimé à une taille spécifique, coin centré sur une page A4. J'aimerais travaillé en mm.

Seulement quand dans l'évenement "PrintPageEventArgs" je change "PageUnit" en milimètres et que j'effectue mes calculs, ca ne marche que pour l'impression et pas le preview.

En debug :
Pour l'impression : VisibleClipBounds.Height et Width sont automatiquement adaptés lors du changement d'unités et donc l'impression fonctionne. Tout cela à condition qu'il n'y ait pas de breakpoint avant le changement d'unité (bizarre ?)
Pour le preview : VisibleClipBounds.Height et Width ne sont pas automatiquement adaptés lors du changement d'unités. Pour un A4 portrait j'obtiens les valeurs 826,67 et 1169,1.

Voici le code tout simple pour la personne qui me consacrera quelques minutes...

<hr />
//Lancement de l'apercu

private
void apercuToolStripMenuItem_Click(
object sender,
EventArgs e)

{

Print_preview_dialog.Document = etiquettes_to_print;

Print_preview_dialog.ShowDialog();

}

//Lancement de l'impression
private
void imprimerLétiquetteCouranteToolStripMenuItem_Click(
object sender,
EventArgs e){

Print_dialog.Document = etiquettes_to_print;

if (Print_dialog.ShowDialog() ==
DialogResult.OK){

etiquettes_to_print.Print();

}

}

//Evenement d'impression
private
void etiquettes_to_print_PrintPage(
object sender,
PrintPageEventArgs e){

//Construction de l'élément graphique

//Travail en mm e.Graphics.PageUnit =

GraphicsUnit.Millimeter;

//Calcul du centre de la page et autres variables

float x = e.Graphics.VisibleClipBounds.Left + e.Graphics.VisibleClipBounds.Width/2;

float y = e.Graphics.VisibleClipBounds.Top + e.Graphics.VisibleClipBounds.Height/2;

float imageWidth = 45F;

float imageHeight = 128F;

float rectLine = 0.25F;

float rectWidth = imageWidth + 2*rectLine;

float rectHeight = imageHeight + 2*rectLine;

//Dessin du contour de l'imagee.Graphics.DrawRectangle(

new
Pen(
Color.Black,rectLine),x ,y , rectWidth, rectHeight);

//Dessin de l'imagee.Graphics.DrawImage(System.Drawing.

Image.FromFile(
"patterns\\vide\\pattern.bmp"),x+rectLine ,y+rectLine , imageWidth, imageHeight);}

MERCI D'AVANCE !!!!!

@@@@@

1 réponse

brixi69 Messages postés 44 Date d'inscription mardi 13 juin 2006 Statut Membre Dernière intervention 31 mars 2008
29 déc. 2006 à 11:39
J'ai trouvé à quoi correspondent ces valeurs. L'unité par défaut pour le "graphics" est 'display'. Cela correspond à 1/100 de pouce soit 0,254 mm.

Les valeurs étant 1169x827.  ==> x 0.254 = 297x210 ok!

Je vais travailler avec cette unité. Cependant j'aimerais savoir si qqun a une technique pour travailler en mm facilement.

@"#+++
0
Rejoignez-nous