我目前正在开发一个应用程序,用户可以在其中动态地在画布上创建/移动 TextBlocks。一旦他们将 TextBlocks 定位到他们想要的位置,他们就可以按下打印按钮,这将导致 ZPL 打印机打印当前显示在屏幕上的内容。
ZPL 命令是通过从每个 TextBlock 中获取以下值来构建的:
- XPosition = Canvas.Left
- YPosition = Canvas.Right
- 文字 = 文字
但是我找不到让打印输出类似于屏幕显示的方法。我猜这是因为 Canvas.Left 和 Canvas.Right 的值与打印机 DPI 不匹配。
这是我目前正在使用的转换(因为我认为 Canvas.Left = 1 表示 1/96 英寸)(画布的左上角是 0,0)
public double GetZplXPosition(UIElement uiElement)
{
int dpiOfPrinter = 300;
double zplXPosition = (Canvas.GetLeft(uiElement) / 96.0) * dpiOfPrinter;
return zplXPosition;
}
是否可以以“实际尺寸”显示控件。使用的纸张将始终为 A5(8.3 英寸 x 5.8 英寸)。
我想过在画布周围使用一个视图框,它的宽度和高度设置为 830 x 580(A5 的比例正确),但这并没有帮助。
有什么建议么??
谢谢