1

我有一个分辨率为 1600*1200 (96 dpi) 的图像 (png)。

我在图像上放了一些文本,然后将其保存到一个文件中,以便使用 silverlight 的 deepzoom 和 pivotviewer 加载它。放大时文本模糊,我想知道如何使文本看起来更清晰(仅在放大一点​​时)。

这是我第一次使用图像/图形进行编程,所以任何信息都会很棒(即阅读链接、理解概念等)

京东。

4

1 回答 1

1

我以前从未使用过这些控件,但您最终可能不得不覆盖缩放算法(如果这甚至可能,我不知道)。如果图像中有文本并且没有使用基于矢量的图像(SVG、EMF、WMF 等),那么任何类型的拉伸都会变得模糊。

如果可能的话,不同的缩放算法可以决定如何拉伸像素。对于文本,您在调整图像大小时正在寻找称为“最近邻”甚至“双三次”插值的东西。这些方法在处理方面更昂贵,因此您可能无法像使用默认插值算法(无论它是什么)那样平滑缩放。

有一些论坛帖子开始了相同的讨论,但没有真正的方向。也许你可以关注他们,看看他们是如何进步的。否则我恐怕帮不上什么忙。

http://social.expression.microsoft.com/Forums/en-US/deepzoomcomposer/thread/dee528a2-06ae-4426-b096-5baafec499ff

http://weblogs.asp.net/bleroy/archive/2009/12/10/resizing-images-from-the-server-using-wpf-wic-instead-of-gdi.aspx

在上一篇文章中,他们提到了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 中。祝你好运!

于 2010-08-04T13:29:31.317 回答