我正在WinForms項目中工作,並且在打印文本時有查詢。所以我創建了簡單的示例來測試問題。在窗體中,我通過使用Form.Graphics手動繪製兩行之間的字符串,並通過在PrintDocument.PrintPage事件中使用PrintPageEventArgs.Graphics再次完成相同的操作。打印預覽中更改了繪圖位置。請看下面的圖片,它顯示了這個問題(即在Form.Graphics和PrintPageEventArgs.Graphics之間繪製線條是不同的)。請讓我知道,爲什麼繪圖位置改變了?在PrintPageEventArgs.Graphis中更改繪圖位置
public Form1()
{
InitializeComponent();
this.Paint += Form1_Paint;
}
void Document_PrintPage(object sender, PrintPageEventArgs e)
{
e.Graphics.DrawLine(new Pen(new SolidBrush(Color.Red)), 10, 10, 10, 25);
e.Graphics.DrawString("Some Chars are getting Cut in Print Preview", this.Font, new SolidBrush(Color.Red), 10, 10);
e.Graphics.DrawLine(new Pen(new SolidBrush(Color.Red)), 228, 10, 228, 25);
}
void Form1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.DrawLine(new Pen(new SolidBrush(Color.Red)), 10, 10, 10, 25);
e.Graphics.DrawString("Some Chars are getting Cut in Print Preview", this.Font, new SolidBrush(Color.Red), 10, 10);
e.Graphics.DrawLine(new Pen(new SolidBrush(Color.Red)), 228, 10, 228, 25);
}
private void button1_Click(object sender, EventArgs e)
{
PrintPreviewDialog ppd = new PrintPreviewDialog();
PrintDocument doc = new PrintDocument();
ppd.Document = doc;
ppd.Document.PrintPage += Document_PrintPage;
ppd.ShowDialog();
}
樣品:TestSample
在此先感謝。
我的回答有幫助嗎? – TheLethalCoder
嗨,我不能在我的生產級別使用Graphics.MeasureStrings()。因爲一列中的每個文本將具有不同的長度。 – Prithiv
然後測量所有的字符串,並採取最大... – TheLethalCoder