如何单独打印所有图像WPF? [英] How do I print all images separately WPF ?
本文介绍了如何单独打印所有图像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屋!
查看全文