20 个解决方案
#1
up
#2
up
#3
gz
#4
如果打印机支持那么大的纸的话,就能够打印,
如果打印机不支持大纸,可以将图片通过程序分割,分别打印,然后再把多张纸拼接起来.
宽幅打印机是支持大纸张的,如2M*2M的.
如果打印机不支持大纸,可以将图片通过程序分割,分别打印,然后再把多张纸拼接起来.
宽幅打印机是支持大纸张的,如2M*2M的.
#5
如何分割大图片呢?
#6
分割--合并--打印机?
#7
那么如果现在给你一个36厘米宽,长为820厘米的位图(*.bmp)图片,使用US Standard Fanfold 的卷筒纸连续打印,又是如何用C#将图片进行各位高手所说的图片分割和合并打印呢?
#8
God,帮你up一下,再帮你查查。
#9
设定纸的宽度就可以了啊。不用分块
#10
怎么设定纸的宽度呢?又是如何实现的呢?有没有现成的代码参考呢?在此,我先隔着河作揖---感激不过了!
#11
关注
#12
不知是要原图尺寸打印,还是缩小适合纸张打印?
适合纸张
PrintDocument prndoc=new PrintDocument();
PrinterSettings prnset=new PrinterSettings();//放在声明变量中
prndoc.PrintPage+=new PrintPageEventHandler(OnPrintPage);//
加入打印事件,放在构造函数中
prndoc.DefaultPageSettings.PaperSize=prnset.DefaultPageSettings.PaperSize;//设默认纸张也可以自定义,放在构造函数中
private void buttonprint_Click(object sender, System.EventArgs e)//定义一个打印按钮事件
{
prndoc.Print();
}
//打印事件
void OnPrintPage(object obj, PrintPageEventArgs ppea)
{
Graphics grfx = ppea.Graphics;
RectangleF rectf = new RectangleF(ppea.MarginBounds.Left - (ppea.PageBounds.Width - grfx.VisibleClipBounds.Width) / 2,
ppea.MarginBounds.Top -
(ppea.PageBounds.Height - grfx.VisibleClipBounds.Height) / 2, ppea.MarginBounds.Width,ppea.MarginBounds.Height);
ppea.Graphics.DrawString(this.textBoxTittle.Text,this.Font,new SolidBrush(ForeColor),this.movelabel1.Location );
ScaleImageIsotropically(grfx, printimage, rectf);//调绘图函数
}
//绘图函数
void ScaleImageIsotropically(Graphics grfx, Image image,
RectangleF rectf) {
//取图像尺寸大小,英寸
SizeF sizef = new SizeF(image.Width / image.HorizontalResolution,
image.Height / image.VerticalResolution);
//打印框尺寸与图像尺寸大小缩放比例,宽度适匹,或高度适匹
float fScale = Math.Min(rectf.Width/sizef.Width,rectf.Height/sizef.Height);
sizef.Width *= fScale;
sizef.Height *= fScale;
RectangleF rectf1=new RectangleF( rectf.X + (rectf.Width - sizef.Width ) / 2,
rectf.Y + (rectf.Height - sizef.Height) / 2,
sizef.Width, sizef.Height);//得到一个居中的打印或绘图框
if(!this.checkBoxFill.Checked){//实际大小打印不缩放
float fScalew=(image.Width / image.HorizontalResolution)*100/(float)(this.prndoc.DefaultPageSettings.Bounds.Width-this.prndoc.DefaultPageSettings.Margins.Left-this.prndoc.DefaultPageSettings.Margins.Right);
float fScaleh=image.Height/image.VerticalResolution*100/(float)(this.prndoc.DefaultPageSettings.Bounds.Height-this.prndoc.DefaultPageSettings.Margins.Top-this.prndoc.DefaultPageSettings.Margins.Bottom);
rectf1.Width=rectf.Width *fScalew;
rectf1.Height=rectf.Height*fScaleh;
rectf1.X =rectf.X ;
rectf1.Y=rectf.Y ;
}if(!this.checkBoxH.Checked)//不水平居中
rectf1.X =rectf.X ;
if(!this.checkBoxV.Checked)//不垂直居中
rectf1.Y=rectf.Y ;
grfx.DrawImage(printimage,rectf1);
}
适合纸张
PrintDocument prndoc=new PrintDocument();
PrinterSettings prnset=new PrinterSettings();//放在声明变量中
prndoc.PrintPage+=new PrintPageEventHandler(OnPrintPage);//
加入打印事件,放在构造函数中
prndoc.DefaultPageSettings.PaperSize=prnset.DefaultPageSettings.PaperSize;//设默认纸张也可以自定义,放在构造函数中
private void buttonprint_Click(object sender, System.EventArgs e)//定义一个打印按钮事件
{
prndoc.Print();
}
//打印事件
void OnPrintPage(object obj, PrintPageEventArgs ppea)
{
Graphics grfx = ppea.Graphics;
RectangleF rectf = new RectangleF(ppea.MarginBounds.Left - (ppea.PageBounds.Width - grfx.VisibleClipBounds.Width) / 2,
ppea.MarginBounds.Top -
(ppea.PageBounds.Height - grfx.VisibleClipBounds.Height) / 2, ppea.MarginBounds.Width,ppea.MarginBounds.Height);
ppea.Graphics.DrawString(this.textBoxTittle.Text,this.Font,new SolidBrush(ForeColor),this.movelabel1.Location );
ScaleImageIsotropically(grfx, printimage, rectf);//调绘图函数
}
//绘图函数
void ScaleImageIsotropically(Graphics grfx, Image image,
RectangleF rectf) {
//取图像尺寸大小,英寸
SizeF sizef = new SizeF(image.Width / image.HorizontalResolution,
image.Height / image.VerticalResolution);
//打印框尺寸与图像尺寸大小缩放比例,宽度适匹,或高度适匹
float fScale = Math.Min(rectf.Width/sizef.Width,rectf.Height/sizef.Height);
sizef.Width *= fScale;
sizef.Height *= fScale;
RectangleF rectf1=new RectangleF( rectf.X + (rectf.Width - sizef.Width ) / 2,
rectf.Y + (rectf.Height - sizef.Height) / 2,
sizef.Width, sizef.Height);//得到一个居中的打印或绘图框
if(!this.checkBoxFill.Checked){//实际大小打印不缩放
float fScalew=(image.Width / image.HorizontalResolution)*100/(float)(this.prndoc.DefaultPageSettings.Bounds.Width-this.prndoc.DefaultPageSettings.Margins.Left-this.prndoc.DefaultPageSettings.Margins.Right);
float fScaleh=image.Height/image.VerticalResolution*100/(float)(this.prndoc.DefaultPageSettings.Bounds.Height-this.prndoc.DefaultPageSettings.Margins.Top-this.prndoc.DefaultPageSettings.Margins.Bottom);
rectf1.Width=rectf.Width *fScalew;
rectf1.Height=rectf.Height*fScaleh;
rectf1.X =rectf.X ;
rectf1.Y=rectf.Y ;
}if(!this.checkBoxH.Checked)//不水平居中
rectf1.X =rectf.X ;
if(!this.checkBoxV.Checked)//不垂直居中
rectf1.Y=rectf.Y ;
grfx.DrawImage(printimage,rectf1);
}
#13
做几个选择按钮选实际大小,或居中。
#14
up
#15
UP
#16
gz
#17
up
#18
如果打印机支持那么大的纸的话,就能够打印,
如果打印机不支持大纸,可以将图片通过程序分割,分别打印,然后再把多张纸拼接起来.
宽幅打印机是支持大纸张的,如2M*2M的.
#19
gz
#20
up
#21
#1
up
#2
up
#3
gz
#4
如果打印机支持那么大的纸的话,就能够打印,
如果打印机不支持大纸,可以将图片通过程序分割,分别打印,然后再把多张纸拼接起来.
宽幅打印机是支持大纸张的,如2M*2M的.
如果打印机不支持大纸,可以将图片通过程序分割,分别打印,然后再把多张纸拼接起来.
宽幅打印机是支持大纸张的,如2M*2M的.
#5
如何分割大图片呢?
#6
分割--合并--打印机?
#7
那么如果现在给你一个36厘米宽,长为820厘米的位图(*.bmp)图片,使用US Standard Fanfold 的卷筒纸连续打印,又是如何用C#将图片进行各位高手所说的图片分割和合并打印呢?
#8
God,帮你up一下,再帮你查查。
#9
设定纸的宽度就可以了啊。不用分块
#10
怎么设定纸的宽度呢?又是如何实现的呢?有没有现成的代码参考呢?在此,我先隔着河作揖---感激不过了!
#11
关注
#12
不知是要原图尺寸打印,还是缩小适合纸张打印?
适合纸张
PrintDocument prndoc=new PrintDocument();
PrinterSettings prnset=new PrinterSettings();//放在声明变量中
prndoc.PrintPage+=new PrintPageEventHandler(OnPrintPage);//
加入打印事件,放在构造函数中
prndoc.DefaultPageSettings.PaperSize=prnset.DefaultPageSettings.PaperSize;//设默认纸张也可以自定义,放在构造函数中
private void buttonprint_Click(object sender, System.EventArgs e)//定义一个打印按钮事件
{
prndoc.Print();
}
//打印事件
void OnPrintPage(object obj, PrintPageEventArgs ppea)
{
Graphics grfx = ppea.Graphics;
RectangleF rectf = new RectangleF(ppea.MarginBounds.Left - (ppea.PageBounds.Width - grfx.VisibleClipBounds.Width) / 2,
ppea.MarginBounds.Top -
(ppea.PageBounds.Height - grfx.VisibleClipBounds.Height) / 2, ppea.MarginBounds.Width,ppea.MarginBounds.Height);
ppea.Graphics.DrawString(this.textBoxTittle.Text,this.Font,new SolidBrush(ForeColor),this.movelabel1.Location );
ScaleImageIsotropically(grfx, printimage, rectf);//调绘图函数
}
//绘图函数
void ScaleImageIsotropically(Graphics grfx, Image image,
RectangleF rectf) {
//取图像尺寸大小,英寸
SizeF sizef = new SizeF(image.Width / image.HorizontalResolution,
image.Height / image.VerticalResolution);
//打印框尺寸与图像尺寸大小缩放比例,宽度适匹,或高度适匹
float fScale = Math.Min(rectf.Width/sizef.Width,rectf.Height/sizef.Height);
sizef.Width *= fScale;
sizef.Height *= fScale;
RectangleF rectf1=new RectangleF( rectf.X + (rectf.Width - sizef.Width ) / 2,
rectf.Y + (rectf.Height - sizef.Height) / 2,
sizef.Width, sizef.Height);//得到一个居中的打印或绘图框
if(!this.checkBoxFill.Checked){//实际大小打印不缩放
float fScalew=(image.Width / image.HorizontalResolution)*100/(float)(this.prndoc.DefaultPageSettings.Bounds.Width-this.prndoc.DefaultPageSettings.Margins.Left-this.prndoc.DefaultPageSettings.Margins.Right);
float fScaleh=image.Height/image.VerticalResolution*100/(float)(this.prndoc.DefaultPageSettings.Bounds.Height-this.prndoc.DefaultPageSettings.Margins.Top-this.prndoc.DefaultPageSettings.Margins.Bottom);
rectf1.Width=rectf.Width *fScalew;
rectf1.Height=rectf.Height*fScaleh;
rectf1.X =rectf.X ;
rectf1.Y=rectf.Y ;
}if(!this.checkBoxH.Checked)//不水平居中
rectf1.X =rectf.X ;
if(!this.checkBoxV.Checked)//不垂直居中
rectf1.Y=rectf.Y ;
grfx.DrawImage(printimage,rectf1);
}
适合纸张
PrintDocument prndoc=new PrintDocument();
PrinterSettings prnset=new PrinterSettings();//放在声明变量中
prndoc.PrintPage+=new PrintPageEventHandler(OnPrintPage);//
加入打印事件,放在构造函数中
prndoc.DefaultPageSettings.PaperSize=prnset.DefaultPageSettings.PaperSize;//设默认纸张也可以自定义,放在构造函数中
private void buttonprint_Click(object sender, System.EventArgs e)//定义一个打印按钮事件
{
prndoc.Print();
}
//打印事件
void OnPrintPage(object obj, PrintPageEventArgs ppea)
{
Graphics grfx = ppea.Graphics;
RectangleF rectf = new RectangleF(ppea.MarginBounds.Left - (ppea.PageBounds.Width - grfx.VisibleClipBounds.Width) / 2,
ppea.MarginBounds.Top -
(ppea.PageBounds.Height - grfx.VisibleClipBounds.Height) / 2, ppea.MarginBounds.Width,ppea.MarginBounds.Height);
ppea.Graphics.DrawString(this.textBoxTittle.Text,this.Font,new SolidBrush(ForeColor),this.movelabel1.Location );
ScaleImageIsotropically(grfx, printimage, rectf);//调绘图函数
}
//绘图函数
void ScaleImageIsotropically(Graphics grfx, Image image,
RectangleF rectf) {
//取图像尺寸大小,英寸
SizeF sizef = new SizeF(image.Width / image.HorizontalResolution,
image.Height / image.VerticalResolution);
//打印框尺寸与图像尺寸大小缩放比例,宽度适匹,或高度适匹
float fScale = Math.Min(rectf.Width/sizef.Width,rectf.Height/sizef.Height);
sizef.Width *= fScale;
sizef.Height *= fScale;
RectangleF rectf1=new RectangleF( rectf.X + (rectf.Width - sizef.Width ) / 2,
rectf.Y + (rectf.Height - sizef.Height) / 2,
sizef.Width, sizef.Height);//得到一个居中的打印或绘图框
if(!this.checkBoxFill.Checked){//实际大小打印不缩放
float fScalew=(image.Width / image.HorizontalResolution)*100/(float)(this.prndoc.DefaultPageSettings.Bounds.Width-this.prndoc.DefaultPageSettings.Margins.Left-this.prndoc.DefaultPageSettings.Margins.Right);
float fScaleh=image.Height/image.VerticalResolution*100/(float)(this.prndoc.DefaultPageSettings.Bounds.Height-this.prndoc.DefaultPageSettings.Margins.Top-this.prndoc.DefaultPageSettings.Margins.Bottom);
rectf1.Width=rectf.Width *fScalew;
rectf1.Height=rectf.Height*fScaleh;
rectf1.X =rectf.X ;
rectf1.Y=rectf.Y ;
}if(!this.checkBoxH.Checked)//不水平居中
rectf1.X =rectf.X ;
if(!this.checkBoxV.Checked)//不垂直居中
rectf1.Y=rectf.Y ;
grfx.DrawImage(printimage,rectf1);
}
#13
做几个选择按钮选实际大小,或居中。
#14
up
#15
UP
#16
gz
#17
up
#18
如果打印机支持那么大的纸的话,就能够打印,
如果打印机不支持大纸,可以将图片通过程序分割,分别打印,然后再把多张纸拼接起来.
宽幅打印机是支持大纸张的,如2M*2M的.
#19
gz
#20
up