これらのコントロールを使用したことはありませんが、ズーム アルゴリズムをオーバーライドする必要が生じる可能性があります (それが可能な場合でも、わかりません)。画像にテキストが含まれていて、ベクターベースの画像 (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
最後の投稿では、列挙型でさまざまな補間アルゴリズムについて言及しています。それらのオプションの 1 つが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 に組み込むことができます。幸運を!