2011-01-26 25 views
4

空のテンプレート画像を読み込み、関連する情報を描画して別のファイルに保存する次の方法があります。私は、次のことを達成するために、わずかにこれを変更したい:テンプレート画像内画像が生成された後に画像を印刷する[C#]

  • 負荷
  • それに関連する情報を引き出すことに

を印刷し、私はそれを保存しません、ちょうどそれを印刷してください。ここに私の既存の方法があります:

public static void GenerateCard(string recipient, string nominee, string reason, out string filename) 
    { 
     // Get a bitmap. 
     Bitmap bmp1 = new Bitmap("template.jpg"); 

     Graphics graphicImage; 

     // Wrapped in a using statement to automatically take care of IDisposable and cleanup 
     using (graphicImage = Graphics.FromImage(bmp1)) 
     { 
      ImageCodecInfo jgpEncoder = GetEncoder(ImageFormat.Jpeg); 

      // Create an Encoder object based on the GUID 
      // for the Quality parameter category. 
      Encoder myEncoder = Encoder.Quality; 

      graphicImage.DrawString(recipient, new Font("Arial", 10, FontStyle.Regular), SystemBrushes.WindowText, new Point(480, 33)); 
      graphicImage.DrawString(WordWrap(reason, 35), new Font("Arial", 10, FontStyle.Regular), SystemBrushes.WindowText, new Point(566, 53)); 
      graphicImage.DrawString(nominee, new Font("Arial", 10, FontStyle.Regular), SystemBrushes.WindowText, new Point(492, 405)); 
      graphicImage.DrawString(DateTime.Now.ToShortDateString(), new Font("Arial", 10, FontStyle.Regular), SystemBrushes.WindowText, new Point(490, 425)); 
      EncoderParameters myEncoderParameters = new EncoderParameters(1); 
      EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, 100L); 
      myEncoderParameters.Param[0] = myEncoderParameter; 

      filename = recipient + " - " + DateTime.Now.ToShortDateString().Replace("/", "-") + ".jpg"; 

      bmp1.Save(filename, jgpEncoder, myEncoderParameters); 
     } 
    } 

はあなたのPrintDocumentクラスを使用すると、あなたは画像を保存するために必要とせずに印刷することができ ブレット

答えて

7

だけ

これを保存せずにプリンタに印刷するには、私が思い付くことができる最も簡単な例です。

Bitmap b = new Bitmap(100, 100); 
using (var g = Graphics.FromImage(b)) 
{ 
    g.DrawString("Hello", this.Font, Brushes.Black, new PointF(0, 0)); 
} 

PrintDocument pd = new PrintDocument(); 
pd.PrintPage += (object printSender, PrintPageEventArgs printE) => 
    { 
     printE.Graphics.DrawImageUnscaled(b, new Point(0, 0)); 
    }; 

PrintDialog dialog = new PrintDialog(); 
dialog.ShowDialog(); 
pd.PrinterSettings = dialog.PrinterSettings; 
pd.Print(); 
3

、あなたは助けることができると思います。

var pd = new PrintDocument(); 
pd.PrintPage += pd_PrintPage; 

pd.Print() 

そしてpd_PrintPageのイベントハンドラで

void pd_PrintPage(object sender, PrintPageEventArgs e) 
{ 
    Graphics gr = e.Graphics; 

    //now you can draw on the gr object you received using some of the code you posted. 
} 

注:グラフィックスを使用すると、イベントハンドラで受信したオブジェクトに捨てないでください。これは、のPrintDocumentオブジェクト自身によって行われます...

2

PrintPageイベントを使用してください。

private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) { 
     e.Graphics.DrawImage(image, 0, 0); 
    } 
関連する問題