gpt4 book ai didi

c# - 如何在 C# 打印中设置打印点

转载 作者:太空宇宙 更新时间:2023-11-03 23:31:17 25 4
gpt4 key购买 nike

我的打印表格包含许多打印位置。我想将文本框文本传递到打印文档中的正确位置。我用(像素)来表示打印点。

g.DrawString("Total", new Font("Arial", 10, FontStyle.Regular), Brushes.Black, new Point(40, 160));
g.DrawString(": ", new Font("Arial", 10, FontStyle.Regular), Brushes.Blue, new Point(150, 160));

测量值以厘米为单位并转换为像素。但它没有放在正确的位置。

我有哪些选择可以更好地控制测量单位?

最佳答案

PageUnit 的默认设置在您的 Graphics 实例上将是 Display

Specifies the unit of measure of the display device. Typically pixels for video displays, and 1/100 inch for printers.

因此,在不更改任何内容的情况下,PrinterDocument 的 Graphics 实例上的 Point 描绘了 1/100 英寸。

根据此信息,一个可能的解决方案是引入辅助方法,将英寸计算为 1/100 英寸,将厘米计算为英寸。

    public static PointF FromCm(float cmx, float cmy)
{
const float cm2inch = 1/2.54F;
return FromInch(cmx * cm2inch, cmy * cm2inch);
}

public static PointF FromInch(float inchx, float inchy)
{
return new PointF(inchx * 100, inchy * 100);
}

然后像这样使用它:

        g.DrawString(
"Total",
new Font("Arial", 10, FontStyle.Regular),
Brushes.Black,
FromCm(1,1));

GraphicsUnit枚举确实有 Millimeter 的设置。

        g.PageUnit = GraphicsUnit.Millimeter;

g.DrawString(
"Total",
new Font("Arial", 10, FontStyle.Regular),
Brushes.Black,
new PointF(25 , 10)); // due to millimeter
// setting this is now 2,5 cm and 1 cm

您可以在绘制过程中随时切换 PageUnit。因此,您可以混合搭配任何方便的测量单位。

关于c# - 如何在 C# 打印中设置打印点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32152988/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com