gpt4 book ai didi

c# - GraphicsUnit.Point 或 Pixel 或打印机的世界?

转载 作者:行者123 更新时间:2023-11-30 22:12:02 33 4
gpt4 key购买 nike

我正在使用带有 VS2010 的 c# 制作桌面应用程序,该应用程序的目的是填写表格(表格是其中包含空格的物理纸张)所以我的程序必须打印我想要的文本我需要打印的确切位置。

我的代码是这样的:

private void urinePrintDocument_PrintPage(object sender,System.Drawing.Printing.PrintPageEventArgs e)
{
//## event handler for urine printing

string FieldValue = ""; // to hold the current text to be printed
SolidBrush BlackBrush = new SolidBrush(Color.Black);
Font MyFont = new Font("Arial", 12, GraphicsUnit.Point); //the font to be used
int myFontHeight = (int)(MyFont.GetHeight(e.Graphics));
int CurrentX, CurrentY;

//millimeter XXXX
//inch XXXXX
//display - error
//Document - very small

// 100 Pixel = 1 inch
//100 Point - 1 inch
// 100 world - 1 inch

CurrentX = 0;
CurrentY = 0;
FieldValue = ptName;
e.Graphics.DrawString(FieldValue, MyFont, BlackBrush, CurrentX, CurrentY);

CurrentX = 100;
CurrentY = 100;
FieldValue = ptFileNumber;
e.Graphics.DrawString(FieldValue, MyFont, BlackBrush, CurrentX, CurrentY);


}

我的问题是关于线路

Font MyFont = new Font("Arial", 12, GraphicsUnit.Point); //the font to be used

特别是 GraphicsUnit.Point 枚举器。我们有 GraphicsUnit.Point 、毫米、英寸、显示、文档、像素、点和世界。我已经尝试了所有方法,发现最后 3 个按预期打印文本,并且似乎每 100 个单位将文本“位移”一英寸。我需要我的代码在所有类型的打印机上产生相同的结果 3 之间有什么区别吗?我应该使用哪一个在打印机上打印?

最佳答案

您在纸上绘制的所有内容都会自动缩放以适合打印机分辨率,它完全不受字体大小的影响。默认缩放比例是 GraphUnit.Display,一种将 100 像素映射到一英寸的缩放比例,您已经发现了。这是一种方便的缩放模式,因为显示器通常设置为每英寸 96 点,因此您打印的所有内容(几乎)与屏幕上显示的大小相同。

您创建的字体大小仅与您在纸上绘制文本的确切位置相关。换句话说,您传递给 Graphics.DrawString() 的 PointF.Y 值。您需要知道字体的行间距(以像素为单位,而不是磅),请使用 MyFont.Height。

关于c# - GraphicsUnit.Point 或 Pixel 或打印机的世界?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19922718/

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