首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C# - 如何打印宽高比/整页

在C#中,打印宽高比/整页可以通过以下方法实现:

  1. 使用Graphics类:
代码语言:csharp
复制
using System.Drawing;
using System.Drawing.Printing;

private void PrintDocument(string text)
{
    PrintDocument printDoc = new PrintDocument();
    printDoc.PrintPage += (sender, args) =>
    {
        Graphics graphics = args.Graphics;
        Font font = new Font("Arial", 12);
        float fontHeight = font.GetHeight();
        int startX = 10;
        int startY = 10;
        int maxWidth = args.MarginBounds.Width;
        int maxHeight = args.MarginBounds.Height;
        StringFormat format = new StringFormat();
        format.Alignment = StringAlignment.Near;
        format.LineAlignment = StringAlignment.Near;
        int lines;
        using (StringFormat sf = new StringFormat())
        {
            sf.Alignment = StringAlignment.Near;
            sf.LineAlignment = StringAlignment.Near;
            sf.Trimming = StringTrimming.Word;
            lines = graphics.MeasureString(text, font, maxWidth, format, out _, out _).Height / fontHeight;
        }
        int pages = (int)Math.Ceiling((double)lines / (maxHeight / fontHeight));
        for (int page = 1; page <= pages; page++)
        {
            graphics.DrawString(text, font, Brushes.Black, new RectangleF(startX, startY, maxWidth, maxHeight), format);
            args.HasMorePages = page< pages;
            startY += maxHeight;
        }
    };
    printDoc.Print();
}
  1. 使用PrintDialog类:
代码语言:csharp
复制
using System.Drawing;
using System.Drawing.Printing;

private void PrintDocument(string text)
{
    PrintDialog printDialog = new PrintDialog();
    PrintDocument printDoc = new PrintDocument();
    printDoc.PrintPage += (sender, args) =>
    {
        Graphics graphics = args.Graphics;
        Font font = new Font("Arial", 12);
        float fontHeight = font.GetHeight();
        int startX = 10;
        int startY = 10;
        int maxWidth = args.MarginBounds.Width;
        int maxHeight = args.MarginBounds.Height;
        StringFormat format = new StringFormat();
        format.Alignment = StringAlignment.Near;
        format.LineAlignment = StringAlignment.Near;
        int lines;
        using (StringFormat sf = new StringFormat())
        {
            sf.Alignment = StringAlignment.Near;
            sf.LineAlignment = StringAlignment.Near;
            sf.Trimming = StringTrimming.Word;
            lines = graphics.MeasureString(text, font, maxWidth, format, out _, out _).Height / fontHeight;
        }
        int pages = (int)Math.Ceiling((double)lines / (maxHeight / fontHeight));
        for (int page = 1; page <= pages; page++)
        {
            graphics.DrawString(text, font, Brushes.Black, new RectangleF(startX, startY, maxWidth, maxHeight), format);
            args.HasMorePages = page< pages;
            startY += maxHeight;
        }
    };
    printDoc.PrinterSettings = printDialog.PrinterSettings;
    printDoc.Print();
}

这两种方法都可以实现打印宽高比/整页的功能。具体使用哪种方法,需要根据实际情况进行选择。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券