0

ウィンドウフォームがあります。フォームの内容をウィンドウの外観なしで印刷したい。つまり、ウィンドウの境界線なしで、領収書のように印刷したいのです。どうすればよいですか?

4

2 に答える 2

1

Windows フォームに印刷する方法に関する MSDN の例を使用して、印刷されるサーフェスをフォームからパネル コントロールに変更します。これにより、境界線なしで印刷できるようになります。フォームではなくパネルにコンテンツを追加する必要がありますが、機能します。MSDN の例を変更した例を次に示します。

public class Form1 : Form
{
    private Panel printPanel = new Panel();
    private Button printButton = new Button();
    private PrintDocument printDocument1 = new PrintDocument();

    public Form1()
    {
        printPanel.Size = this.ClientSize;
        this.Controls.Add(printPanel);
        printButton.Text = "Print Form";
        printButton.Click += new EventHandler(printButton_Click);
        printDocument1.PrintPage += new PrintPageEventHandler(printDocument1_PrintPage);
        printPanel.Controls.Add(printButton);

    }

    void printButton_Click(object sender, EventArgs e)
    {
        CaptureScreen();
        printDocument1.Print();
    }


    Bitmap memoryImage;

    private void CaptureScreen()
    {
        Graphics myGraphics = printPanel.CreateGraphics();
        Size s = printPanel.Size; 
        memoryImage = new Bitmap(s.Width, s.Height, myGraphics);
        Graphics memoryGraphics = Graphics.FromImage(memoryImage);
        Point screenLoc = PointToScreen(printPanel.Location); // Get the location of the Panel in Screen Coordinates
        memoryGraphics.CopyFromScreen(screenLoc.X, screenLoc.Y, 0, 0, s);
    }

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



    public static void Main()
    {
        Application.Run(new Form1());
    }
}
于 2012-06-10T06:27:20.800 に答える
-1

このようなことを行うことで、空白の画面を取得できます

this.FormBorderStyle = System.Windows.Forms.FormsBorderStyle.None;
this.ControlBox = false;
this.Text = String.Empty;
于 2012-06-10T04:48:19.097 に答える