Graphics.DrawString的x、y的定义和纸张上的位置如何定关系?
是和打印机的分辨率对应,还是和纸张尺寸对应?
是和打印机的分辨率对应,还是和纸张尺寸对应?
5 个解决方案
#1
这个是和你Graphics对象对应的.
#2
x,y是以象素区分坐标.跟打印机的分辨率有关.
#3
具体什么关系呢?
#4
x,y的位置有Graphics的两个属性决定:
1.Transform,决定画图的坐标系,向哪个方向做图
2.PageUnit决定x,y值的度量单位,根据度量单位不同x,y代表的长度不同。如果使用Millimeter,不管在什么设备上(显示器、打印机)都是按毫米做为度量单位。PageScale,决定缩放比例。
1.Transform,决定画图的坐标系,向哪个方向做图
2.PageUnit决定x,y值的度量单位,根据度量单位不同x,y代表的长度不同。如果使用Millimeter,不管在什么设备上(显示器、打印机)都是按毫米做为度量单位。PageScale,决定缩放比例。
#5
如果你是打印的话
用PrintDocument的话在画到打印上时可以通过PrintPageEventArgs 中获取打印的可打印区域
此时Graphics一般默认的是像素,对就的是可打印区域的像素位置!
如果你是显示的话是针对的屏幕的!其实针对就是你要将它画到打印机上的话就是对应可打印区域,画到屏幕上的话它就是对应屏幕的
/// <summary>
/// 打印设置对话框。
/// </summary>
public void Print()
{
PrintDocument p = new PrintDocument();
p.PrintPage += new PrintPageEventHandler(this.PrintPageEventHandler);
p.Print();
//PrintPreviewDialog prev = new PrintPreviewDialog();
//prev.Document = p;
//prev.ShowDialog();
}
private void PrintPageEventHandler(object obj, System.Drawing.Printing.PrintPageEventArgs ev)
{
//获取打印区域的宽度
int width = ev.PageSettings.PrintableArea.Width;
//获取打印区域的高度
int height = ev.PageSettings.PrintableArea.Height;
}
用PrintDocument的话在画到打印上时可以通过PrintPageEventArgs 中获取打印的可打印区域
此时Graphics一般默认的是像素,对就的是可打印区域的像素位置!
如果你是显示的话是针对的屏幕的!其实针对就是你要将它画到打印机上的话就是对应可打印区域,画到屏幕上的话它就是对应屏幕的
/// <summary>
/// 打印设置对话框。
/// </summary>
public void Print()
{
PrintDocument p = new PrintDocument();
p.PrintPage += new PrintPageEventHandler(this.PrintPageEventHandler);
p.Print();
//PrintPreviewDialog prev = new PrintPreviewDialog();
//prev.Document = p;
//prev.ShowDialog();
}
private void PrintPageEventHandler(object obj, System.Drawing.Printing.PrintPageEventArgs ev)
{
//获取打印区域的宽度
int width = ev.PageSettings.PrintableArea.Width;
//获取打印区域的高度
int height = ev.PageSettings.PrintableArea.Height;
}