5

.NETv3.5で正常に機能している画像サイズ変更パイプラインにWPFを使用しています。プロジェクトをターゲットv4.0にアップグレードしたところ、サイズ変更されたすべてのイメージのエイリアスが大きくなりました。画像パイプラインコードは変更されていません。

  1. デフォルトのWPF設定はv3.5とv4.0の間で変更されましたか?

  2. サイズ変更されたビットマップイメージのディザリングをWPFで制御するにはどうすればよいですか?

、、、、、を使用しBitmapImageていますがDrawingVisual、ディザリングに関連するプロパティが表示されません。GDI +にはたくさんの設定があったので、何かが足りないと思います。DrawingContextRenderTargetBitmapBitmapEncoderBitmapFrame

更新:私が見たすべてのソリューションは、WindowオブジェクトまたはXAML環境を想定しているようです。これは、UIのない​​Windowsサービス内で実行されます。この設定にプログラムで影響を与える方法が必要です。

GDI +には、サービスやWebアプリなどの長時間実行されるプロセスでメモリリークが発生するため、特にGDI+からWPFに切り替えました。

4

2 に答える 2

3

の設定に影響を与えることができた唯一の方法はBitmapScalingMode、クラスから継承しDrawingVisual、保護されたアクセサーを介して設定することです。

// exposes BitmapScalingMode (also works for other protected properties)
public class MyDrawingVisual : DrawingVisual
{
    public BitmapScalingMode BitmapScalingMode
    {
        get { return this.VisualBitmapScalingMode; }
        set { this.VisualBitmapScalingMode = value; }
    }
}

他の誰かがこれを設定するためのより良い方法を知っているなら、私はそれについて聞いて興奮します.

これはうまくいくようです:

RenderOptions.SetBitmapScalingMode(myDrawingVisual, BitmapScalingMode.HighQuality);

...しかし、そうではありません。どうやら XAML ウィンドウ ランタイムの外部にあるということは、適切な値を設定できないことを意味しているに違いありません。

于 2010-06-04T00:17:24.503 に答える
0

デフォルトの BitmapScalingMode は 3.0 では Fant でしたが、4.0 では BiLinear になりました。デフォルトはいくつかの方法で変更できます。ここに記載されているカップル。

于 2010-06-03T20:29:14.637 に答える