我有一张分辨率为1600 * 1200(96 dpi)的图像(png)。
我在图像上放了一些文字,然后将其保存到文件中,以便使用silverlight的deepzoom和pivotviewer加载它。放大时文字模糊,我想知道如何让文字看起来更清晰(只有放大一点)。
这是我对图像/图形的第一次编程,所以任何信息都会很棒(即阅读链接,理解概念等)
JD。
答案 0 :(得分:1)
我之前从未使用过这些控件,但最终可能无法覆盖缩放算法(如果可能的话,我不知道)。如果你在图像中有文字并且你没有使用基于矢量的图像(SVG,EMF,WMF等),那么任何类型的拉伸都会变得模糊。
不同的缩放算法(如果可能的话)可以决定如何拉伸像素。对于文本,当图像调整大小时,您正在寻找称为“最近邻居”或甚至“双立方”插值的内容。这些方法在处理方面更加昂贵,因此您可能无法像使用默认插值算法那样平滑缩放(无论是什么)。
有一些论坛帖子开始相同的讨论,但没有真正的方向。也许你可以关注他们,看看他们是如何进步的。我担心否则我无法提供太多帮助。
在上一篇文章中,他们引用了BitmapScalingMode
枚举中的不同插值算法。其中一个选项是NearestNeighbor
。还有一些调整大小的图像的例子。
<强>更新强>
在this article中,作者研究了一种改变Deep Zoom控件使用的图像切片质量的方法(他正在使用Silverlight!)。作者在他的项目中用几行代码有效地改变了图像的创建方式:
if (bSmoothScaling)
{
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
g.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;
g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
}
在该分配列表中,您可以找到我一直提到的插值模式,以及其他一些我不知道的事情。作者确实提到了对性能的重大影响,所有内容都设置为“高质量”。
希望您可以采用这个概念并以某种方式将其合并到Silverlight中。祝你好运!