旋轉。跳躍 不停歇
當字串要旋轉列印時,計算位置麻煩,設一個函數來輔助
/// <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);