5

MS RibbonControlsLibrary ( 3.5.41019.1 )に基づいてプログラムでリボン (WPF) を設定しています。すべての画像 (最も目立つ大きな画像) は非常に悪く、「ピクピク」に見えます。

2 リボンのスクリーンショット

  • のスクリーンショットは「pixly」リボンからのものです(画像のスケーリングが悪いようです)
  • のスクリーンショットは、同じソース画像を使用して WinForms に基づくウィンドウの同じ領域から取得したものです(画像のスケーリングは良好に見えます) 。
  • すべての画像は32 ビット PNG 48x48で保存されます

BitmapScalingModeを "HighQuality"に設定しようとしましたが、影響はありません。ソース コード:

BitmapImage img = new BitmapImage();
try
{
    Uri uri = new Uri("pack://application:,,,/UIMainWindow;component/Resources/" + iPictureName);                
    img.BeginInit();
    img.SetValue(BitmapImage.CacheOptionProperty, BitmapCacheOption.OnLoad);
    RenderOptions.SetBitmapScalingMode(img, BitmapScalingMode.HighQuality);
    img.UriSource = uri;
    img.EndInit();
    img.Freeze();
}
catch (Exception ex)
{
    throw new Exception("Creation of image failed: " + ex.Message, ex);
}

質問 画像のスケーリングが悪いのはなぜですか? どうすればこれを解決できますか?

4

4 に答える 4

0

使用しているオペレーティング システムは何ですか? - WPF は XP よりも見栄えがよくありません (Vista および 7 では問題ありません)。これは、アンチエイリアシングのデフォルトが XP と新しいオペレーティング システムで異なるためだと思います。

XAML で幅と高さを 48 に設定して、画像のサイズに合わせます (ストレッチ パラメーターも確認してください)。

48x48 の 32 ビット PNG では、画像はきれいに見えるはずです。

リボン バーは引き伸ばされていないため、ベクトル グラフィックスは冗長です。

上記で問題が解決しない場合は、align をデバイス ピクセルに設定し、LayoutRoundingを設定してみてください。

コメントで提案したように、画像のサイズを表示サイズに変更できますが、同じであることを確認するには、XAML で明示的に設定する必要があります。

高さまたは幅を 32 に設定し、ScaleTransformを使用して、WPF で画像のサイズを明示的に変更することもできます。

于 2012-05-30T12:54:48.817 に答える
0

ベクター グラフィックスを使用してみてください。この種の画像に相当する xaml を生成するために使用できるツールはたくさんあります。この記事を参照すると、少し役立つかもしれません。

于 2012-05-30T12:48:57.610 に答える