如何单独打印所有图像WPF? [英] How do I print all images separately WPF ?

查看:72
本文介绍了如何单独打印所有图像WPF?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,



我正在使用列表视图和图像列表。通过单击列表视图行然后获取所有选定的图像并想要打印这些图像。我试过了。点击后,



 PrintDocument pd =  new  PrintDocument(); 
pd.PrintPage + = new PrintPageEventHandler(PrintPage);
System.Windows.Forms.PrintDialog pdi = new System.Windows.Forms.PrintDialog();
pdi.Document = pd;
if (pdi.ShowDialog()== System.Windows.Forms.DialogResult.OK)
{
pd.Print( );
}
else
{
MessageBox.Show( 打印已取消);
}





我的尝试:



在此代码之后,



  private  < span class =code-keyword> void  PrintPage( object  o,PrintPageEventArgs e)
{
List< ListViewItemsData> objListViewItemsData = new List< ListViewItemsData>();
DMSBusinessLayer service = new DMSBusinessLayer();
列表< DocumentsUser> objTble_Documents = new List< DocumentsUser>();
int UserId = 0 ;
string ImgName = string .Empty;
foreach (DocumentsUser item in listView1.SelectedItems)
{
UserId = Convert.ToInt32(item.UserId);
ImgName = item.Parent_File_Name;
objTble_Documents = service.PrintUserDocuments(ImgName,UserId).AsEnumerable()。选择(m = > new DocumentsUser()
{
Child_File_Name = m.Field< string>( Child_File_Name),
FilePath = m.Field< string>( FilePath),
Parent_File_Name = m.Field< string>( Parent_File_Name
})。ToList();
}

foreach var i in objTble_Documents)
{
objListViewItemsData.Add( new ListViewItemsData()
{
GridViewColumnName_ImageSource =(Convert.ToString(i.FilePath)+ Convert.ToString(i.Parent_File_Name)+ _ + Convert.ToString(i.Child_File_Name)),
});
}

foreach var ii in objListViewItemsData)
{
System.Drawing.Image img = System.Drawing.Image.FromFile(ii.GridViewColumnName_ImageSource.ToString());
System.Drawing.Rectangle m = e.MarginBounds;

if (( double )img.Width /( double )img.Height > double )m。宽度/( double )m.Height)
{
m.Height =( int )(( double )img.Height /( double )img.Width *()m.Width);
}
else
{
m.Width =( int )(( double )img.Width /( double )img.Height *()m.Height);
}
e.Graphics.DrawImage(img,m);
}
}







'objListViewItemsData'列表对象包含所有图像以及如何单独打印每个图像文件?请帮帮我...

解决方案

试试这个



这不应该在你的PrintPage方法中,而是按一下按钮。

图片imgToPrint; 
protected void btnPrint_Click(object sender,EventArgs e){
foreach(objListViewItemsData中的var ii)
{
System.Drawing.Image img System.Drawing.Image.FromFile(ii .GridViewColumnName_ImageSource.ToString());

imgToPrint = img;
PrintDocument pd = new PrintDocument();
pd.OriginAtMargins = true;
pd.PrintPage + = pd_PrintPage;
pd.DefaultPageSettings.Landscape = true;
pd.Print();
}
}





 void pd_PrintPage(object sender,PrintPageEventArgs e)
{
Point loc = new Point(100,100);
e.Graphics.DrawImage(imgToPrint,loc);
}





只需设置自己的尺寸,它就会将每个图像打印为新页面(实例)


Hello everyone,

I am using listview with list of images. By click listview row then getting all selected images and want to print those images. I have tried. After click,

PrintDocument pd = new PrintDocument();
            pd.PrintPage += new PrintPageEventHandler(PrintPage);
            System.Windows.Forms.PrintDialog pdi = new System.Windows.Forms.PrintDialog();
            pdi.Document = pd;
            if (pdi.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {                    
                pd.Print();
            }
            else
            {
                MessageBox.Show("Print Cancelled");
            }



What I have tried:

After this code,

private void PrintPage(object o, PrintPageEventArgs e)
      {
          List<ListViewItemsData> objListViewItemsData = new List<ListViewItemsData>();
          DMSBusinessLayer service = new DMSBusinessLayer();
          List<DocumentsUser> objTble_Documents = new List<DocumentsUser>();
          int UserId = 0;
          string ImgName = string.Empty;
          foreach (DocumentsUser item in listView1.SelectedItems)
          {
              UserId = Convert.ToInt32(item.UserId);
              ImgName = item.Parent_File_Name;
              objTble_Documents = service.PrintUserDocuments(ImgName, UserId).AsEnumerable().Select(m => new DocumentsUser()
              {
                  Child_File_Name = m.Field<string>("Child_File_Name"),
                  FilePath = m.Field<string>("FilePath"),
                  Parent_File_Name = m.Field<string>("Parent_File_Name")
              }).ToList();
          }

          foreach (var i in objTble_Documents)
          {
              objListViewItemsData.Add(new ListViewItemsData()
              {
                  GridViewColumnName_ImageSource = (Convert.ToString(i.FilePath) + Convert.ToString(i.Parent_File_Name) + "_" + Convert.ToString(i.Child_File_Name)),
              });
          }

          foreach (var ii in objListViewItemsData)
          {
              System.Drawing.Image img = System.Drawing.Image.FromFile(ii.GridViewColumnName_ImageSource.ToString());
              System.Drawing.Rectangle m = e.MarginBounds;

              if ((double)img.Width / (double)img.Height > (double)m.Width / (double)m.Height)
              {
                  m.Height = (int)((double)img.Height / (double)img.Width * (double)m.Width);
              }
              else
              {
                  m.Width = (int)((double)img.Width / (double)img.Height * (double)m.Height);
              }
              e.Graphics.DrawImage(img, m);
          }
      }




'objListViewItemsData' list object contain all images and how can I print each image file separately? Please help me...

解决方案

Try this

This shouldn't be in your PrintPage method, but rather on a button click.

 Image imgToPrint;
protected void btnPrint_Click(object sender, EventArgs e){
 foreach (var ii in objListViewItemsData)
            {
                System.Drawing.Image img System.Drawing.Image.FromFile(ii.GridViewColumnName_ImageSource.ToString());
       
      imgToPrint = img;
      PrintDocument pd = new PrintDocument();
      pd.OriginAtMargins = true;
      pd.PrintPage += pd_PrintPage;
      pd.DefaultPageSettings.Landscape = true;
      pd.Print();
            }
}



void pd_PrintPage(object sender, PrintPageEventArgs e)
 {
    Point loc = new Point(100, 100);
 e.Graphics.DrawImage(imgToPrint , loc);
 }



Just set your own dimensions and it will print each image as a new page(instance).


这篇关于如何单独打印所有图像WPF?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆