Tag: 分辨率

如何使用c#查看程序中的图像质量?

我想查看照片是否适合打印或不使用我的应用程序。我怎么能这样做?我对照片质量了解不多?每张照片的分辨率是否相同?

如何在不改变C#.Net的分辨率的情况下裁剪图像?

我做了一个小程序来分割大图片并参与其中。 当我导入由“Microsoft Paint”制作的图像时,此图像为“96 dpi”,因此我的程序运行良好。 但我用Photoshop制作的照片,其分辨率为71.6 dpi,当我裁剪这些照片时,新裁剪的照片分辨率为96 dpi,因此它们之间的尺寸是差别。 我希望通过保持其分辨率来裁剪图片。 。 非常感谢你

.NET – Bitmap.Save在Windows 7上忽略Bitmap.SetResolution

我正在编写一个.NET 4应用程序,用于导入和保存图像以进行打印。 保存的图像分辨率(DPI不是像素尺寸)必须设置为我们指定的值,以便正确打印。 我们导入的一些图像没有分辨率值(生成它们时出现错误的EXIF),因此我们必须在编写之前纠正它们。 我们使用Bitmap.SetResolution。 它在XP和Windows 8上工作正常,但是当我们在Windows 7上编写(Bitmap.Save)图像时,它们总是用原始分辨率元信息编写,忽略SetResolution。 这是我们做的测试,适用于XP和8,而不是7。 string originalFile = @”D:\temp\img\original_img.jpg”; string newFile = @”D:\temp\img\new_img.jpg”; Bitmap bitmap = (Bitmap)Image.FromFile(originalFile); bitmap.SetResolution(200, 200); bitmap.Save(newFile, ImageFormat.Jpeg); Image image = Image.FromFile(newFile); int dpiX = (int)Math.Round(image.HorizontalResolution, MidpointRounding.ToEven); int dpiY = (int)Math.Round(image.VerticalResolution, MidpointRounding.ToEven); Console.WriteLine(“DPI is {0} x {1}”, dpiX, dpiY); 在保存之前,调试始终显示由SetResolution指定的正确分辨率,保存的图像是问题所在。 这可能是这里报道的: http : //social.msdn.microsoft.com/Forums/vstudio/en-US/62368caa-05f4-4798-9c59-5d82f881a97c/systemdrawingbitmapsetresolution-is-completely-broken-on-windows- 7?论坛= netfxbcl 但那里的问题似乎仍未得到解决。 真的没有办法让它发挥作用吗? […]

如何强制我想要的任何显示分辨率/时间?

我无法找到一种方法来强制我想要在我的C#程序中显示任何显示分辨率/时间。 我正在运行带有GeForce 210显卡的Windows 7。 我目前实现这些自定义分辨率的方法是使用驱动程序GUI手动添加自定义分辨率,然后使用Windows调用更改为这些分辨率,但我需要一种实时添加新自定义分辨率的方法。 我已经研究过NVAPI,但我找不到办法做到这一点。 我也查看了图形驱动程序的命令行工具,但我无法让它工作。 我最后的办法是重写注册表中的值,但我真的想避免这种情况。 我愿意使用不同的编程语言或第三方工具,只要我可以通过我的程序从命令行调用它。 谁能指出我正确的方向? 提前致谢。 更新(2011年8月16日):我一直在与NVIDIA一起解决这个问题,他们正在为我提供一个高级NVAPI,这将允许我重新创建其驱动程序的function。 他们还证实,他们提供的NVAPI的基本版本不会这样做。

屏幕分辨率与Screen.Bounds不匹配

我看到通过控制面板设置的分辨率和我的宽屏笔记本电脑的Screen.Bounds输出之间有一个有趣的区别。 屏幕为15.5“,通过控制面板设置的分辨率为1920×1080。但是当我运行这样的代码时。 Screen[] screens = Screen.AllScreens; foreach (Screen scr in screens) { Console.WriteLine(“Width: ” + scr.Bounds.Width + “, Height: ” + scr.Bounds.Width); } 输出显示我的分辨率为1536×864。 我做了一些环顾四周,我认为它可能与DPI问题有关,当我查看我的显示设置时,滑块(我在Windows 8.1上)位于中间,复选框指出“让我为我的所有显示选择一个缩放级别“未选中。 我运行这个小代码来获取当前的DPI设置。 float dpiX, dpiY; Graphics graphics = new System.Windows.Forms.Form().CreateGraphics(); Console.WriteLine(“DPI: ” + graphics.DpiX); 返回的DPI是96.0,根据我的理解,它是100%DPI设置(因此没有放大或任何调用)。 对我来说似乎很奇怪的是,Screen返回的界限恰好是我实际分辨率的80%,这会让我认为我的DPI设置为100(或125%),但事实并非如此。 我的笔记本电脑屏幕只有这个问题,因为我的辅助显示器的界限等于通过控制面板的分辨率。 这是因为我的DPI设置未设置为使显示器彼此独立(选中该复选框)? 对于一些背景知识,我正在编写一个工具,它可以获取当前屏幕并从reddit获取图片,并将它们彼此独立地放在屏幕上,所以无论我有什么解决方案,它都必须正确地获得每个显示器的分辨率。

保存更高分辨率的图表而不会弄乱外观

你们都必须原谅我的无知,因为我最近才开始使用C#。 我只是对Windows图表控件有疑问,因为我遇到了一个相当愚蠢的问题。 我有一个程序,其中有一些报告,包括漂亮的窗口图表来表示一些数据。 但是,我一直在将这些图表保存到文件以及各种用途,只需使用以下内容: chart2.SaveImage(savefilename,ChartImageFormat.Png); 我的第一个问题在于,我不确定如何在保存前不先增加图表控件的大小而将其保存为更高的分辨率。 拥有合理质量的图像会很高兴。 第二个问题是当我确实增加图表控件的大小时,可用的操作似乎只能增加实际图表的大小,而不是标签或文本。 如果我可以手动更改所有这些,这不会是一个问题,这就是我对条形图所做的,但有一条线我无法弄清楚如何制作更厚的:饼图上的标签线。 我在下图中画了一个箭头: http://www.bolinger.ca/chart.png 因此,当图表增加到合理的分辨率时,由于没有增加到适当的相对大小,该线几乎不可见。 我觉得应该有办法改变它,但无法弄清楚它会是什么。 再次,原谅我的无知。 如果这两个问题中的任何一个都可以解决,那么我可以轻松地知道这些饼图看起来不错。 谢谢!

如何在C#中使用指定的容差比较DateTime对象?

默认情况下,C#将DateTime对象与100ns刻度进行比较。 但是,我的数据库将DateTime值返回到最接近的毫秒。 使用指定的容差比较C#中两个DateTime对象的最佳方法是什么? 编辑:我正在处理截断问题,而不是舍入问题。 正如Joe在下面指出的那样,舍入问题将引入新的问题。 适合我的解决方案是以下组合。 (dateTime1 – dateTime2).Duration() < TimeSpan.FromMilliseconds(1) 如果差值小于1毫秒,则返回true。 对Duration()的调用很重要,以获得两个日期之间差异的绝对值。

我们如何降低myProcess.TotalProcessorTime的分辨率?

我正在使用TotalProcessorTime通过cpu中的方法来测量时间。 for(int i=0;i<10;i++){ double s = Process.getCurrentProcess().TotalProcessorTime; primeNumber(500); //return the 500 primenumber doube e = Process.getCurrentProcess().TotalProcessorTime; Console.writeLine(es); } 输出如下:0 15,0001 15,0001 0 32,0002 0 15,0001 0 15,0001 因此所有输出都是多达到15,6001,分辨率非常高。 那么我们如何才能将此分辨率降低到1,2,6,5,2等值? 为什么对于相同的代码,它给出了不同的值0 15,6001 32,0002?

如何使用XNA调整窗口大小

我知道这个问题之前已被问过很多次了。 但是,经过一个多小时的谷歌搜索,我发现的所有解决方案基本上都是一样的。 每个人都说,为了在XNA中调整窗口大小,您只需在Game1类的Initiate()方法中添加以下代码行(或这些代码行的一些细微变化): //A lot of people say that the ApplyChanges() call is not necessary, //and equally as many say that it is. graphics.IsFullScreen = false; graphics.PreferredBackBufferWidth = 800; graphics.PreferredBackBufferHeight = 600; graphics.ApplyChanges(); 这对我不起作用。 代码编译并运行,但绝对没有任何变化。 我一直在搜索GraphicsDevice和GraphicsDeviceManager类的文档,但我一直无法找到任何信息表明我需要做除上述之外的任何事情。 我也很相信我的显卡已经足够了(ATI HD 5870),虽然看起来XNA显卡兼容性上的wiki条目还没有更新一段时间。 我在Windows 7上运行,使用上面的显卡,Visual C#2010 Express和最新版本的XNA。 所以我只是希望有人可以帮我找到搞砸的地方。 我将在下面发布我的整个Game1类(我将其重命名为MainApp)。 如果有人想看到任何其他被调用的类,请问我会发布它们。 public class MainApp : Microsoft.Xna.Framework.Game { GraphicsDeviceManager graphics; SpriteBatch […]

WPF中的屏幕分辨率问题?

我将在WPF中使用以下代码检测分辨率: double height = System.Windows.SystemParameters.PrimaryScreenHeight; double width = System.Windows.SystemParameters.PrimaryScreenWidth; 屏幕的当前分辨率为1920 * 1200,但height为960.0, width为1536.0! 它出什么问题了 ? 提前致谢。