2016-10-30 25 views
0

Windowsフォームを印刷しようとしています。どのように私はこの問題を解決することができますC#Windowsフォーム印刷 - 画面の領域が正しく表示されない

(フレームが印刷された紙の境界を示すために、私が作られる)

Windows Form print issue

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) 
    { 
     e.Graphics.DrawImage(bmp, 0, 0); 
    } 

    Bitmap bmp; 

    private void button1_Click(object sender, EventArgs e) 
    { 
     Graphics g = this.CreateGraphics(); 
     bmp = new Bitmap(this.Size.Width, this.Size.Height, g); 
     Graphics mg = Graphics.FromImage(bmp); 
     mg.CopyFromScreen(this.Location.X, this.Location.Y, 0, 0, this.Size); 
     printDialog1.ShowDialog(); 
     printDocument1.Print(); 
     printDocument1.PrintPage += new PrintPageEventHandler(printDocument1_PrintPage); 
    } 
} 

しかし、それは私にこの結果を与える:私の解決策はありますか?

答えて

0

この

private void button1_Click(object sender, EventArgs e) 
{ 
    //Add a Panel control. 
    Panel panel = new Panel(); 
    this.Controls.Add(panel); 

    //Create a Bitmap of size same as that of the Form. 
    Graphics grp = panel.CreateGraphics(); 
    Size formSize = this.ClientSize; 
    bitmap = new Bitmap(formSize.Width, formSize.Height, grp); 
    grp = Graphics.FromImage(bitmap); 

    //Copy screen area that that the Panel covers. 
    Point panelLocation = PointToScreen(panel.Location); 
    grp.CopyFromScreen(panelLocation.X, panelLocation.Y, 0, 0, formSize); 

    //Show the Print Preview Dialog. 
    printPreviewDialog1.Document = printDocument1; 
    printPreviewDialog1.PrintPreviewControl.Zoom = 1; 
    printPreviewDialog1.ShowDialog(); 
} 

参考してみてください。答えをhttp://www.aspsnippets.com/Articles/Print-contents-of-Form-in-Windows-Forms-WinForms-Application-using-C-and-VBNet.aspx

+0

感謝を:)しかし、それは動作しませんでした。それはフォームでズームインするだけで、出力は最初の出力とほぼ同じですが、ズームインされているという違いがあります。 – qwerty

関連する問題