簡體   English   中英

Graphics.DrawString打印頁面上的中心文本

[英]Graphics.DrawString centre text on printed page

我正在使用以下命令從C#WPF應用程序中打印出一些文本:

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        PrintDocument printDocument = new PrintDocument();
        printDocument.PrinterSettings.PrinterName = "\\\\servername\\printername";

        printDocument.PrintPage += new PrintPageEventHandler(this.pd_PrintPage);
        if (printDocument.PrinterSettings.IsValid)
        {
            printDocument.Print();
        }
    }

    // The PrintPage event is raised for each page to be printed. 
    private void pd_PrintPage(object sender, PrintPageEventArgs ev)
    {
        string stringToPrint = "SOME TEXT TO PRINT";

        // Create font and brush.
        Font drawFont = new Font("Arial", 16);
        SolidBrush drawBrush = new SolidBrush(System.Drawing.Color.Black);

        System.Drawing.Point pos = new System.Drawing.Point(100, 100);

        ev.Graphics.DrawString(stringToPrint, drawFont, drawBrush, pos);

        ev.HasMorePages = false;
    }

上面的示例使用固定位置,但是我需要打印出所有不同長度的幾行文本,並且希望將它們全部居中在頁面上(x位置)。

我怎樣才能做到這一點?

Graphics.DrawString的重載使用StringFormat參數,可用於設置矩形中文本的水平和垂直對齊方式。 我過去曾使用過類似的方法。

string stringToPrint = "SOME TEXT TO PRINT";
StringFormat sf = new StringFormat();
sf.Alignment = StringAlignment.Center;

// Create font and brush.
Font drawFont = new Font("Arial", 16);
SolidBrush drawBrush = new SolidBrush(System.Drawing.Color.Black);

//Starting point of left margin,Width of page, Height of Text
System.Drawing.RectangleF rect = new System.Drawing.RectangleF(0, 100, 100, 50); 

ev.Graphics.DrawString(stringToPrint, drawFont, drawBrush, rect, sf);

ev.HasMorePages = false;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM