winform 如何遍历目录下所有JPG\PNG格式的图片并逐张打印?

 我来答
依红旭Gf
推荐于2016-03-17 · TA获得超过413个赞
知道小有建树答主
回答量:403
采纳率:92%
帮助的人:293万
展开全部

分为三步:

  1. 拖一个打印控件,添加打印事件

  2. 遍历目录,获取所有以JPG和PNG为后缀名的文件路径数组

  3. 开始打印,设置打印附加页,一次性打印完

下面是代码:

   private string[] m_FileList; //存储图片的数组
        private int i = 0;//记录开始

        private void btn_begin_Click(object sender, EventArgs e)
        {
            string l_strFileDir = "";//你自己的路径 
            FolderBrowserDialog dlg = new FolderBrowserDialog();
            dlg.ShowNewFolderButton = false;
            dlg.Description = "选择图片文件夹";
            if (dlg.ShowDialog() == DialogResult.OK)
            {
                l_strFileDir = dlg.SelectedPath;
            }
            else
            {
                return;
            }

            //获取该目录下所有的jpg和png图片 没有测试大小写
            string[] FileList = Directory.GetFiles(l_strFileDir, "*.jpg", SearchOption.AllDirectories);
            string[] FileList1 = Directory.GetFiles(l_strFileDir, "*.PNG", SearchOption.AllDirectories);
            m_FileList = FileList.Concat(FileList1).ToArray();
            PrintDialog MyPrintDg = new PrintDialog();
            MyPrintDg.Document = printDocument1;
            MyPrintDg.AllowSomePages = true;
            if (MyPrintDg.ShowDialog() == DialogResult.OK)
            {
                try
                {
                    printDocument1.Print();
                }
                catch
                {   //停止打印
                    printDocument1.PrintController.OnEndPrint(printDocument1, new System.Drawing.Printing.PrintEventArgs());
                }
            }
            }
  
     private void printDocument1_PrintPage_1(object sender, System.Drawing.Printing.PrintPageEventArgs e)
        {
            try
            {
                if (i < m_FileList.Length)
                {
                    e.Graphics.DrawImageUnscaled(Image.FromFile(m_FileList[i]), e.PageBounds);
                    e.HasMorePages = true; //设置是否继续打印附加页面
                    i++;
                    if (i == m_FileList.Length)
                    {
                        e.HasMorePages = false;
                    }
                }
                //e.Graphics.DrawImage(pictureBox1.Image, 20, 20);
            }
            catch (Exception exception)
            {
                Console.WriteLine(exception);
            }
        }
hero06111001
推荐于2016-11-17 · 超过19用户采纳过TA的回答
知道答主
回答量:50
采纳率:0%
帮助的人:26.4万
展开全部
给你提供一个文件夹遍历图片的方法,打印自己找找C#有没有什么api

//图片过滤器
public string PictureFilter = ".bmp;.BMP;.jpg;.JPG;.jpeg;JPEG;.gif;.GIF;.png;.PNG;";

//递归遍历目录下所有图片文件的列表
public static void GetFileNames(string pathname, List<string> fileList)
{
string[] subFiles = Directory.GetFiles(pathname);
foreach (string subFile in subFiles)
{
if (Util.IsValidFile(subFile, App.iCommCfg.PictureFilter))
{
fileList.Add(subFile);
Console.WriteLine(subFile);
}
}

string[] subDirs = Directory.GetDirectories(pathname);
foreach (string subDir in subDirs)
{
GetFileNames(subDir, fileList);
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式