2

現在開発中の WPF アプリケーションでは、ユーザーはキャンバスに線を描くことができます。もちろん、保存した後、いくつかの異なるファイル形式 (JPEG や独自のファイル形式などの出力として) を見ることができます。これは正常に機能しますが、JPEG バージョンはトリミングする必要があり、このトリミングが発生すると、オブジェクトの上部が余分なピクセルで切り取られます。

コードでは、アンチエイリアシング設定を使用しています。

EdgeMode.Aliased; 

System.Windows.Media.EdgeMode に基づく

以下を参照してください。現在、これがコメントアウトされている場合、問題は解決されているため、トリミングに問題はありませんが、線はよりシャープなエッジでレンダリングされ、受け入れられません。

誰かがこの問題にさらされましたか? もしそうなら、この問題の解決策または回避策は何ですか?

#region Assembly PresentationCore.dll, v4.0.0.0
// C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\PresentationCore.dll
#endregion

using System;

namespace System.Windows.Media
{
    // Summary:
    //     Determines how the edges of non-text drawing primitives are rendered.
    public enum EdgeMode
    {
        // Summary:
        //     No edge mode is specified. Do not alter the current edge mode of non-text
        //     drawing primitives. This is the default value.
        Unspecified = 0,
        //
        // Summary:
        //     Render the edges of non-text drawing primitives as aliased edges.
        Aliased = 1,
    }
}

ありがとうございました

ここに画像の説明を入力

4

2 に答える 2

1

SnapsToDevicePixelsを画像に設定Trueするか、すべての UIElements にそのプロパティを自動的に継承させたい場合は、ルート要素をウィンドウに設定してみてください。

MSDNから-

WPF グラフィックス システムは、デバイスに依存しないユニットを使用して、解像度とデバイスに依存しないようにします。デバイスに依存しない各ピクセルは、システムのインチあたりのドット数 (dpi) 設定に合わせて自動的にスケーリングされます。これにより、さまざまな dpi 設定に対して WPF アプリケーションに適切なスケーリングが提供され、アプリケーションが自動的に dpi 対応になります。ただし、このdpi 非依存性により、アンチエイリアシングが原因で不規則なエッジ レンダリングが作成される可能性があります。. これらのアーティファクトは、エッジの位置がデバイス ピクセル間ではなく、デバイス ピクセルの中央にある場合に発生する可能性があります。この問題に対処するために、WPF では、ビジュアル ツリー内のオブジェクトのエッジを、ピクセル スナッピングによってデバイス ピクセルにスナップまたは固定する方法を提供し、アンチエイリアシングによって生成される半透明のエッジを排除します。

また、SOのこのリンクをチェックして、他の多くのオプションを詳細に説明することもできます-

  • UseLayoutRendering画像をオンに設定しtrueます。
  • に設定RenderOptions.BitmapScalingModeNearestNeighborます。
于 2013-11-07T18:25:26.803 に答える
0

簡単に言うと、アンチエイリアシングは、近くのピクセルをブレンドしてギザギザのエッジを軽減することによって機能します。線の場合、線のエッジ周辺の数ピクセルが部分的にエッジとブレンドされることが予想されます。おそらく不透明度が低下していますが、そこには何かがあります。それらはコンテンツを持っているという意味で「余分な」ピクセルではありません。

ビジュアルを画像に保存するために使用するコードを投稿すると、クリッピングをより厳密に調整できるようになる可能性があります。ただし、これにより、画像の端にぎざぎざの線や頂点などのアーティファクトが生じる可能性があることに注意してください。

于 2013-11-07T17:47:08.977 に答える