在整页上打印表单而不是其中的一部分

时间:2014-07-11 13:18:25

标签: c#

我想在整个页面上打印我的表单,但是图片看起来像这样:

http://i.stack.imgur.com/JSXh2.jpg

它看起来非常小,这就是为什么我需要在整个整页上打印表格

这是我的代码:

private void button5_Click(object sender, EventArgs e)
    {
        CaptureScreen();
        printDocument1.Print();

    }

    private Bitmap _memoryImage;

    private void CaptureScreen()
    {
        // put into using construct because Graphics objects do not 
        //  get automatically disposed when leaving method scope
        using (var myGraphics = CreateGraphics())
        {
            var s = Size;
            _memoryImage = new Bitmap(s.Width, s.Height, myGraphics);
            using (var memoryGraphics = Graphics.FromImage(_memoryImage))
            {
                memoryGraphics.CopyFromScreen(Location.X, Location.Y, 0, 0, s);
            }
        }
    }

    private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
    {



        var wScale = e.MarginBounds.Width / (float)_memoryImage.Width;
        var hScale = e.MarginBounds.Height / (float)_memoryImage.Height;

        // choose the smaller of the two scales
        var scale = wScale < hScale ? wScale : hScale;

        // apply scaling to the image
        e.Graphics.ScaleTransform(scale, scale);

        // print to default printer's page
        e.Graphics.DrawImage(_memoryImage, 0, 0);

    }

您的帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

尝试这样做以制作表单的位图:

Bitmap bm = new Bitmap(f1.Width, f1.Height);
this.DrawToBitmap(bm, new Rectangle(f1.Location, f1.Size));

也许这就是问题所在!报告是否有效! 如果要以横向格式打印,则必须使用以下方法旋转位图:

public Bitmap rotateInternalFunction(Bitmap bitmap)
{
    bitmap.RotateFlip(RotateFlipType.Rotate90FlipNone);
    return bitmap;
}