現在、ユーザーがキャンバス上で 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 の正しい比率) に設定されたキャンバスの周りにビューボックスを使用することを考えましたが、これは役に立ちませんでした。
助言がありますか??
ありがとう