我有一个分辨率为 1600*1200 (96 dpi) 的图像 (png)。
我在图像上放了一些文本,然后将其保存到一个文件中,以便使用 silverlight 的 deepzoom 和 pivotviewer 加载它。放大时文本模糊,我想知道如何使文本看起来更清晰(仅在放大一点时)。
这是我第一次使用图像/图形进行编程,所以任何信息都会很棒(即阅读链接、理解概念等)
京东。
我有一个分辨率为 1600*1200 (96 dpi) 的图像 (png)。
我在图像上放了一些文本,然后将其保存到一个文件中,以便使用 silverlight 的 deepzoom 和 pivotviewer 加载它。放大时文本模糊,我想知道如何使文本看起来更清晰(仅在放大一点时)。
这是我第一次使用图像/图形进行编程,所以任何信息都会很棒(即阅读链接、理解概念等)
京东。
我以前从未使用过这些控件,但您最终可能不得不覆盖缩放算法(如果这甚至可能,我不知道)。如果图像中有文本并且没有使用基于矢量的图像(SVG、EMF、WMF 等),那么任何类型的拉伸都会变得模糊。
如果可能的话,不同的缩放算法可以决定如何拉伸像素。对于文本,您在调整图像大小时正在寻找称为“最近邻”甚至“双三次”插值的东西。这些方法在处理方面更昂贵,因此您可能无法像使用默认插值算法(无论它是什么)那样平滑缩放。
有一些论坛帖子开始了相同的讨论,但没有真正的方向。也许你可以关注他们,看看他们是如何进步的。否则我恐怕帮不上什么忙。
在上一篇文章中,他们提到了BitmapScalingMode
枚举中的不同插值算法。这些选项之一是NearestNeighbor
. 还有一些调整大小图像的示例。
更新:
在本文中,作者介绍了一种更改 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 中。祝你好运!