0

問題は次のとおりです。Display というコントロール内にライブ画像を表​​示するアプリケーションがあります。表示コントロール内のライブ画像の上に (潜在的にインタラクティブな) レイヤーが存在する可能性があります (Displayコントロールは基本的LiveImageLayerに下部にあるグリッドです)。利用可能なレイヤーのほとんどは、画像を目立たなくするための線グラフィックで構成されています。一部のレイヤーは、ボタンやスライダーなどの標準の WPF コントロールで構成されています (テンプレートが変更されているため、線のグラフィックスを使用してレンダリングされます)。DrawingContext を使用して直接描画されるレイヤーもあります。

ライブ ノイズ画像の上にあるレイヤー グラフィックスの視認性と可読性を向上させるために、レイヤーにエフェクトを割り当てようとしましDropShadowた。これは、視覚的な観点から非常にうまく機能しました。ただし、パフォーマンスの観点からは非常に悪かったです。ImageLayer の高速更新 (最大 60Hz) によりDropShadow、画像更新頻度ですべてのレイヤーの効果が再計算されました (レイヤー自体が変更されていなくても)。

各レイヤーに手動で旧式の影 (下に黒いペンとブラシを配置した同じグラフィックスを右下に移動) を実装できます。そして、他に良い方法がない場合は実際に実行します。

だから、私の質問は: そのような影を達成するための自動または半自動の方法はありますか? 実際のレイヤーの下に移動した長方形を作成し、そのブラシを実際のレイヤーの視覚ブラシに設定することを考えました。ただし、ビジュアル ブラシの色を黒に変更する方法 (エフェクト以外) が見つかりませんでした。

何か案は?

4

1 に答える 1

1

しばらく前にショードウで同様のパフォーマンスの問題がありました。結局Border、偽の影を作成するために使用しましたが、ユーザーコントロールでLinearGradientBrush、影をもう少しリアルにするために使用しましたが、ブラシの設定を思い出せません。しかし、これはそれが作成した効果の種類。

ここに画像の説明を入力

<Grid>
     <Border Margin="57,74,162,114" BorderThickness="2,0,0,2" CornerRadius="5" BorderBrush="#AA000000">
            <Button Content="StackOverflow" />
    </Border>
</Grid>

あなたの説明のような問題を解決するために、WPFEffectsがシャドウとしてレンダリングされたCPUであることは少し残念です。

于 2013-01-07T21:09:15.520 に答える