如何实现 winform打印(求winform打印高手支招)
我做了一个winform打印功能,打印纸张值是自定义的,边距我全都设置的100(也是系统默认的)为什么打印出来的结果是最右边的内容超出了可打印的范围,然后我查看了一下Pr...
我做了一个winform打印功能,打印纸张值是自定义的,边距我全都设置的100(也是系统默认的)
为什么打印出来的结果是 最右边的内容超出了可打印的范围,
然后我查看了一下PrintDocument.DefaultPageSettings.PrintableArea属性,
这个属性的值是分别是X=11.666667 Y=16.666666 Width=792.222 Height=334.444458
如何更改这个值? 展开
为什么打印出来的结果是 最右边的内容超出了可打印的范围,
然后我查看了一下PrintDocument.DefaultPageSettings.PrintableArea属性,
这个属性的值是分别是X=11.666667 Y=16.666666 Width=792.222 Height=334.444458
如何更改这个值? 展开
4个回答
展开全部
操作步骤:
1、新建winform项目及创建窗体
2、拖取 打印 相关控件
PageSetupDialog 、 PrintDialog 、 PrintDocument 、PrintPreviewDialog
3、设置上述控件的Document属性为相应的PrintDocument
4、设置按钮等控件 及 添加相应按钮事件
5、示意代码如下
代码
public partial class Form3 : Form
{
public Form3()
{
InitializeComponent();
this.printDocument1.OriginAtMargins = true;//启用页边距
this.pageSetupDialog1.EnableMetric = true; //以毫米为单位
}
//打印设置
private void btnSetPrint_Click(object sender, EventArgs e)
{
this.pageSetupDialog1.ShowDialog();
}
//打印预览
private void btnPrePrint_Click(object sender, EventArgs e)
{
this.printPreviewDialog1.ShowDialog();
}
//打印
private void btnPrint_Click(object sender, EventArgs e)
{
if (this.printDialog1.ShowDialog() == DialogResult.OK)
{
this.printDocument1.Print();
}
}
//打印内容的设置
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
////打印内容 为 整个Form
//Image myFormImage;
//myFormImage = new Bitmap(this.Width, this.Height);
//Graphics g = Graphics.FromImage(myFormImage);
//g.CopyFromScreen(this.Location.X, this.Location.Y, 0, 0, this.Size);
//e.Graphics.DrawImage(myFormImage, 0, 0);
////打印内容 为 局部的 this.groupBox1
//Bitmap _NewBitmap = new Bitmap(groupBox1.Width, groupBox1.Height);
//groupBox1.DrawToBitmap(_NewBitmap, new Rectangle(0, 0, _NewBitmap.Width, _NewBitmap.Height));
//e.Graphics.DrawImage(_NewBitmap, 0, 0, _NewBitmap.Width, _NewBitmap.Height);
//打印内容 为 自定义文本内容
Font font = new Font("宋体", 12);
Brush bru = Brushes.Blue;
for (int i = 1; i <= 5; i++)
{
e.Graphics.DrawString("Hello world ", font, bru, i*20, i*20);
}
}
}
1、新建winform项目及创建窗体
2、拖取 打印 相关控件
PageSetupDialog 、 PrintDialog 、 PrintDocument 、PrintPreviewDialog
3、设置上述控件的Document属性为相应的PrintDocument
4、设置按钮等控件 及 添加相应按钮事件
5、示意代码如下
代码
public partial class Form3 : Form
{
public Form3()
{
InitializeComponent();
this.printDocument1.OriginAtMargins = true;//启用页边距
this.pageSetupDialog1.EnableMetric = true; //以毫米为单位
}
//打印设置
private void btnSetPrint_Click(object sender, EventArgs e)
{
this.pageSetupDialog1.ShowDialog();
}
//打印预览
private void btnPrePrint_Click(object sender, EventArgs e)
{
this.printPreviewDialog1.ShowDialog();
}
//打印
private void btnPrint_Click(object sender, EventArgs e)
{
if (this.printDialog1.ShowDialog() == DialogResult.OK)
{
this.printDocument1.Print();
}
}
//打印内容的设置
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
////打印内容 为 整个Form
//Image myFormImage;
//myFormImage = new Bitmap(this.Width, this.Height);
//Graphics g = Graphics.FromImage(myFormImage);
//g.CopyFromScreen(this.Location.X, this.Location.Y, 0, 0, this.Size);
//e.Graphics.DrawImage(myFormImage, 0, 0);
////打印内容 为 局部的 this.groupBox1
//Bitmap _NewBitmap = new Bitmap(groupBox1.Width, groupBox1.Height);
//groupBox1.DrawToBitmap(_NewBitmap, new Rectangle(0, 0, _NewBitmap.Width, _NewBitmap.Height));
//e.Graphics.DrawImage(_NewBitmap, 0, 0, _NewBitmap.Width, _NewBitmap.Height);
//打印内容 为 自定义文本内容
Font font = new Font("宋体", 12);
Brush bru = Brushes.Blue;
for (int i = 1; i <= 5; i++)
{
e.Graphics.DrawString("Hello world ", font, bru, i*20, i*20);
}
}
}
展开全部
嗯,这个PrintableArea属性是只读的,没有办法设置,它的值只和打印机本身的设置有关,你去查看打印机属性里面的打印机首选项,看看是否有去掉边框的选项,没有的话就没有办法了,打印机不支持就只能重新Draw了。
更多追问追答
追问
重新Draw?如何 重新Draw?
追答
你在打印机的GDI里面画的时候把区域设定为打印机默认的printableArea,懂吗?就是说,你之前画的时候,你是在整张纸上画的,现在只能在特定的一块区域画了,如果你会在整张纸上画,那么你是一定也会在特定区域画的,不过我知道画确实是麻烦。。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
度量单位没搞对吧。像A4纸的大小转化为像素时每台电脑都会不一样的。所以你要先把象素与英寸的单位关系搞清了然后再设置边距,你可以从这方面下手试试看
追问
如果我把边距都设置为0会怎样?!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有个report控件可以看看,或者搜水晶报表
追问
谢谢你的回答,不过很抱歉不是控件的问题,也与水晶报表无关,
我的打印功能,能实现,就是主要问题出在打印范围之类的问题上!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询