获取已安装或选定打印机的最大dpi的C#代码

获取已安装或选定打印机的最大dpi的C#代码,c#,printing,dpi,C#,Printing,Dpi,我想获得已安装或选定打印机的最大Dpi。我试过了 PrinterSettings ps = new PrinterSettings(); MessageBox.Show(ps.PrinterResolutions.ToString()); 我得到这个输出:System.Drawing.Printing.PrinterSettings+PreinterResolutionCollection (所需输出为600x600)。看起来PrinterResolutions是一个集合,您正

我想获得已安装或选定打印机的最大Dpi。我试过了

PrinterSettings ps = new PrinterSettings();
        MessageBox.Show(ps.PrinterResolutions.ToString());
我得到这个输出:System.Drawing.Printing.PrinterSettings+PreinterResolutionCollection
(所需输出为600x600)。

看起来PrinterResolutions是一个集合,您正在尝试将其转换为字符串值。

看起来PrinterResolutions是一个集合,您正在尝试将其转换为字符串值。

打印机分辨率是一个集合,您将需要遍历它以读取所有可用的分辨率,例如:

foreach (string installedPrinter in PrinterSettings.InstalledPrinters)
{
    var ps = new PrinterSettings { PrinterName = installedPrinter };
    var maxResolution = ps.PrinterResolutions.Cast<PrinterResolution>().OrderByDescending(pr => pr.X).First();
    Console.WriteLine("{0}: {1}x{2}", installedPrinter, maxResolution.X, maxResolution.Y);
}

打印机分辨率是一个集合,您需要遍历它来读取所有可用的分辨率,例如:

foreach (string installedPrinter in PrinterSettings.InstalledPrinters)
{
    var ps = new PrinterSettings { PrinterName = installedPrinter };
    var maxResolution = ps.PrinterResolutions.Cast<PrinterResolution>().OrderByDescending(pr => pr.X).First();
    Console.WriteLine("{0}: {1}x{2}", installedPrinter, maxResolution.X, maxResolution.Y);
}
使用LINQ:

PrinterSettings ps = new PrinterSettings();
var maxResolution = ps.PrinterResolutions.OfType<PrinterResolution>()
                                         .OrderByDescending(r => r.X)
                                         .ThenByDescending(r => r.Y)
                                         .First();
MessageBox.Show(String.Format("{0}x{1}", maxResolution.X, maxResolution.Y));
PrinterSettings ps=新的PrinterSettings();
var maxResolution=ps.PrinterResolutions.OfType()
.OrderByDescending(r=>r.X)
.然后下降(r=>r.Y)
.First();
Show(String.Format(“{0}x{1}”,maxResolution.x,maxResolution.Y));
使用LINQ:

PrinterSettings ps = new PrinterSettings();
var maxResolution = ps.PrinterResolutions.OfType<PrinterResolution>()
                                         .OrderByDescending(r => r.X)
                                         .ThenByDescending(r => r.Y)
                                         .First();
MessageBox.Show(String.Format("{0}x{1}", maxResolution.X, maxResolution.Y));
PrinterSettings ps=新的PrinterSettings();
var maxResolution=ps.PrinterResolutions.OfType()
.OrderByDescending(r=>r.X)
.然后下降(r=>r.Y)
.First();
Show(String.Format(“{0}x{1}”,maxResolution.x,maxResolution.Y));
这是我使用的(.NET 2.0,因此没有Linq)

公共静态整数比较解决方案(System.Drawing.Printing.PrinterResolution y、System.Drawing.Printing.PrinterResolution x)
{
如果(x.x*x.Y>Y.x*Y.Y)
返回1;
else if(x.x*x.Y0)
prMax=ls[0];
ls.Clear();
ls=null;
返回prMax;
}
这是我使用的(.NET 2.0,因此没有Linq)

公共静态整数比较解决方案(System.Drawing.Printing.PrinterResolution y、System.Drawing.Printing.PrinterResolution x)
{
如果(x.x*x.Y>Y.x*Y.Y)
返回1;
else if(x.x*x.Y0)
prMax=ls[0];
ls.Clear();
ls=null;
返回prMax;
}

那么如何获得600x600(我的pritner的最大dpi,如规范所示)的期望输出,以及如何获得600x600(我的pritner的最大dpi,如规范所示)的期望输出到Dve:我尝试过,但显示的输出类似于[PrinterResolution High]、[PrinterResolution Medium]、[PrinterResolution Low],[PrinterResolution Draft]。但我想要答案600x600(即我的打印机规格中的最大dpi)。我得到了三个答案。第三个是佳能iP1300-1x-1。什么是-1x-1。你能解释一下吗?@Dhaval只有当PrinterResolutionKind==自定义时才会返回分辨率。请看这里:到Dve:我尝试了,但显示了类似的输出[PrinterResolution High]、[PrinterResolution Medium]、[PrinterResolution Low]、[PrinterResolution Draft]。但我想要的答案是600x600(即我的打印机的最大dpi规格)我得到了三个答案。第三个是佳能iP1300-1x-1。什么是-1x-1。你能解释一下吗?@Dhaval只有当PrinterResolutionKind==custom时才会返回解析。请参阅此处:显示错误4'System.Drawing.PrinterSettings.PrinterResolutionCollection'不包含“OrderByDescending”的定义,也没有扩展方法'Ord'无法找到“接受类型为”System.Drawing.Printing.PrinterSettings.PrinterResolutionCollection“的第一个参数(您是否缺少using指令或程序集引用?@Dhaval确保您有指令
using System.Linq;
@Dhaval还编辑了我的答案,以处理
PrinterResolutions
实现的非泛型
IEnumerable
。显示错误4'System.Drawing.Printering.PrinterSettings.PrinterResolutionColle“Action”不包含“OrderByDescending”的定义,并且找不到接受类型为“System.Drawing.Printing.PrinterSettings.PrinterResolutionCollection”的第一个参数的扩展方法“OrderByDescending”(您是否缺少using指令或程序集引用?@Dhaval确保您有使用System.Linq;@Dhaval的指令
。此外,我还编辑了我的答案,以处理
PrinterResolutions
实现的非泛型
IEnumerable
)。