2010-09-03 4 views
1

J'essaie d'imprimer une image en utilisant PrintDocument en C# mais en quelque sorte le paramètre (comme Nombre de pages et la qualité d'image) sont ignorés lors de l'impression et l'aperçu.PrinterSetting sont ignorés lors de l'impression d'une image

Y at-il quelque chose de mal dans le code suivant, Suis-je manque quelque chose?

private void button1_Click(object sender, EventArgs e) 
{ 
    using (var printDialog = new PrintDialog()) 
    { 
     if (printDialog.ShowDialog() == DialogResult.OK) 
     { 
      _printDocument.PrinterSettings = printDialog.PrinterSettings;  
     } 
    } 
} 

void _printDocument_Print(object sender, PrintPageEventArgs e) 
{ 
    using (Image image = new Bitmap("image0002.tif")) 
    { 
     e.Graphics.DrawImage(image, e.MarginBounds.X, e.MarginBounds.Y); 
    } 
} 

Répondre

1

Avez-vous essayé de placer le document que vous souhaitez imprimer Document propriété du PrintDialog? La boîte de dialogue devrait automatiquement gérer les paramètres pour le PrintDocument actuel si je me souviens bien, donc il ne devrait pas être nécessaire d'attribuer manuellement le PrinterSettings.

En outre, je pense qu'un DialogResult.OK de PrintDialog.ShowDialog() signifie que vous devez imprimer le document (l'utilisateur a cliqué sur le bouton « Imprimer »).

Par exemple:

using (var printDialog = new PrintDialog { Document = _printDocument }) 
{ 
    if (printDialog.ShowDialog() == DialogResult.OK) 
    { 
     _printDocument.Print();  
    } 
} 

Est-ce que l'aide?


EDIT: Si vous ne voulez pas imprimer tout de suite, vous pouvez essayer:

using (var printDialog = new PrintDialog { Document = _printDocument }) 
{ 
    printDialog.ShowDialog();  
} 

mais les utilisateurs peuvent trouver un peu étrange si elles cliquez sur « Imprimer » et le document ne pas imprimer.

+0

Cela nous a aidé à comprendre la façon dont fonctionne PrintDialog, mais est-il possible que je peux régler la 'PrinterSettings' pour documenter avec' PrintDialog' et imprimer plus tard avec un autre bouton clic ou plus tard? –

+0

@Prashant - Je suppose que vous pourriez juste montrer 'PrintDialog' et ignorer le résultat, en le laissant interagir avec les paramètres du document comme il le souhaite. Je devine que si l'utilisateur clique sur "Annuler", les changements seront jetés, rien d'autre, et ils devraient être appliqués, mais cela fait un moment que j'ai travaillé avec ce genre de choses. Voir ma modification. –

Questions connexes