C# 字串旋轉列印

旋轉。跳躍 不停歇

 

當字串要旋轉列印時,計算位置麻煩,設一個函數來輔助

/// <summary>
/// 旋轉列印字串
/// </summary>
/// <param name="e">PrintPageEventArgs</param>
/// <param name="font">字型</param>
/// <param name="degree">旋轉角度</param>
/// <param name="msg">列印訊息</param>
/// <param name="x">重設原點 X 位置</param>
/// <param name="y">重設原點 Y 位置</param>
private void RotateDeawString(PrintPageEventArgs e, Font font, int degree, string msg, int x, int y)
{
	// 原點位置重設
	e.Graphics.TranslateTransform(mmTo100InchX(x), mmTo100InchY(y));
	// 設定旋轉角度
	e.Graphics.RotateTransform(degree);
	// 標題
	e.Graphics.DrawString(msg, font, Brushes.Black, mmTo100InchX(0), mmTo100InchY(0));
	//繪圖畫布還原
	e.Graphics.ResetTransform();
}

其中 mmTo100InchX()、mmTo100InchY() 是用來計算印表機列印時,由mm換成100倍inch的函數,來指定印表機列印的位置,其內可視狀況加偏移量

private int mmTo100InchX(int mm)
{
	int times = 100;
	double result = (mm * times / 25.4);
	return (int)Math.Floor(result);
}

private int mmTo100InchY(int mm)
{
	int times = 100;
	double result = (mm * times / 25.4);
	return (int)Math.Floor(result);
}

呼叫方式

RotateDeawString(e, font, 90, "國際條碼", 12, 7);