c# – .NET CF Bitmap类质量很差
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – .NET CF Bitmap类质量很差,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1802字,纯文字阅读大概需要3分钟。
内容图文
![c# – .NET CF Bitmap类质量很差](/upload/InfoBanner/zyjiaocheng/807/d9befd07ebc14fd4a256ab7f6adb4d9b.jpg)
我有一些使用Bitmap类创建图形的代码.然而,生成的位图的质量非常差,我怎样才能提高质量呢?请注意,我正在使用Compact Framework!
以下是我如何做各种事情的几个片段:
使用基于现有jpg的背景创建位图
Bitmap bitmap = new Bitmap(filename);
然后我从位图创建一个Graphics类
Graphics myG = Graphics.FromImage(bitmap);
然后我像这样绘制图形:
myG.DrawLine(majorAxisPen, graphRect.Left, graphRect.Bottom, graphRect.Right, graphRect.Bottom);
在绘制了我需要的所有内容之后,然后像这样保存Bitmap:
bitmap.Save(fileDestination, System.Drawing.Imaging.ImageFormat.Jpeg);
这是它产生的图像
解决方法:
您可能会遇到两种“低质量”的来源.
>对图形对象的实际绘制可能是低质量的 – 即您绘制的线可能是别名(像素化).
>将图形输出到流时,低质量可能是jpeg编码的副作用.
每个Graphics对象都有许多属性,用于控制可以对对象执行的操作的“质量”.特别是,您应该将SmoothingMode设置为HighQuality以避免线条图上出现锯齿现象. .NET Compact Framework中不支持.
为了避免压缩失真,您可以通过手动控制压缩而不是使用(低质量)默认ImageFormat.Jpeg来控制jpeg压缩参数 – 遗憾的是,如果不依靠手动P / Invoking或第三方库,就无法在CF上执行此操作.有关完整.NET Framework的更广泛的代码示例,请参阅我写给类似问题的答案:How do you conver a HttpPostedFileBase to an Image?.
一个简单的替代方法是使用PNG,这是一种无损图像格式,每次保存时都不会降低质量 – 鉴于您发布的示例的简单几何形状,这甚至不会使您在文件大小方面花费任何成本.使用其他格式可能是您唯一的选择;由于ImageCodecInfo不可用,因此在Compact Framework中无法自定义jpeg编码器参数.如果您确实需要Jpeg,则可以尝试直接使用外部库(例如http://www.opennetcf.com/library/sdf/)或P / Invoke本机方法来访问特定于平台的编码器.
一些可能的抗锯齿方法:
>这里描述了一个简单的.NET CF仿伪抗锯齿:Anti aliasing DrawLine on CE
>一个相关的问题,建议在.NET CF:Graphs in .NET CF上绘制图形
>外部库,例如http://www.opennetcf.com/library/sdf/,http://drawingcf.codeplex.com/
> P / Invoke
内容总结
以上是互联网集市为您收集整理的c# – .NET CF Bitmap类质量很差全部内容,希望文章能够帮你解决c# – .NET CF Bitmap类质量很差所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。