C#如何批量打印图片?

sharda 2010-10-20 10:44:58

#region 预览前绘图
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
int x = 0;
int y = 0;
int panHeight = panel1.Height;
decimal count = 0;
if (panHeight > 1123)
{
count = (panHeight / 1123) + 1;

}
Bitmap img = new Bitmap(panel1.Width,panHeight);
Graphics g = e.Graphics;
this.panel1.DrawToBitmap(img,new Rectangle(new Point(0,0),panel1.Size));


img.Save("c:\\save.jpg");

for (int i = 1; i < count; i++)
{
imgs = img.Clone(new Rectangle(x, y, 795, 1123), img.PixelFormat);
g.DrawImage(imgs, new Rectangle(0, 0, panel1.Width, 1123));
//imgs.Save("c:\\save"+i+".jpg");
y += 1123;
}

}

可是每次只打印了最后一张.请问要如何实现批量打印图片,这些图是我从一张大图上切下来的小图.imgs.Save("c:\\save"+i+".jpg");只是为了测试图片是否成功存下来...我查了下图片是保存下来了.可是打印还是只打最后一张...
...全文
706 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
q87742235 2010-10-27
  • 打赏
  • 举报
回复
shoujiaol
xingyuebuyu 2010-10-27
  • 打赏
  • 举报
回复
        Bitmap imgs;
decimal count = 0;
decimal count1 = 0;
int x = 0;
int y = 0;

private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{

int panHeight = panel1.Height;

int height = 61;


if (panHeight > height)
{
count =(int)System.Math.Ceiling(panHeight /(double) height);

}
Bitmap img = new Bitmap(panel1.Width, panHeight);
Graphics g = e.Graphics;
this.panel1.DrawToBitmap(img, new Rectangle(new Point(0, 0), panel1.Size));




imgs = img.Clone(new Rectangle(x, y, 195, height), img.PixelFormat);

g.DrawImage(imgs, new Rectangle(0, 0, panel1.Width, height));
//imgs.Save("d:\\save" + count1.ToString() + ".jpg");
y += height;
count1 += 1;
img.Dispose();
imgs.Dispose();
if (count1 == count)
{
e.HasMorePages = false;
}
else
{
e.HasMorePages = true;
}
}



因为你是将大小一样但是图片内容不同的图片打印在同一页纸的同一位置,所以你只能看到最后一张图片
的效果,前面的都被覆盖了。
你可以选择打印在不同页,也可以打印在同一页的不同位置上。上面的是分页打印,同页打印的你要重新计算每张图片的坐标
qiuxin425 2010-10-20
  • 打赏
  • 举报
回复
学习......
sharda 2010-10-20
  • 打赏
  • 举报
回复
这些图我是在这个事件中生成的...下面不是一个FOR了.结果还是只打最后一张
aini178 2010-10-20
  • 打赏
  • 举报
回复
Example: SimpleImageHandler.ashx
<%@ WebHandler Language="C#" Class="SimpleImageHandler" %>

using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Web;
using System.Web.Caching;

public class SimpleImageHandler : IHttpHandler {

public void ProcessRequest(HttpContext context)
{
// Load image.
Bitmap bmap = new Bitmap(@"C:\Temp\TEST.JPG");

// You could do something here, e.g. add some texts to image.

// Send back image.
context.Response.ContentType = "image/jpeg";
context.Response.BufferOutput = false;
bmap.Save(context.Response.OutputStream, ImageFormat.Jpeg);
}

public bool IsReusable
{
get
{
return false;
}
}

}

这是打印一张的例子,你可以遍历文件,整个队列打印。

110,570

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧