2

私はそのImageようにクリップされています:

<Image Width="45" Grid.Column="0" Source="{Binding Photo}">
    <Image.Clip>
        <RectangleGeometry Rect="0,0,45,55" RadiusX="8" RadiusY="8" />
    </Image.Clip>
</Image>

ドロップシャドウ効果を適用するにはどうすればよいですか?

更新:
レイが指摘したように、最良の解決策はアンダーソンによって提案されたものです-ラッピングボーダーを持っています。アンダーソンに感謝します。

4

3 に答える 3

4

これはあなたのためのトリックを行います:

<Border>
  <Border.Effect>
    <DropShadowEffect />
  </Border.Effect>
  <Image Stretch="None" Source="{Binding Photo}" >
    <Image.Clip>
      <RectangleGeometry Rect="0,0,45,55" RadiusX="8" RadiusY="8"/>
    </Image.Clip>
  </Image>
</Border>

もちろん、これはあなたの元のアイデアですが、DropShadowEffectがラッピングボーダーに適用されているだけです。ビットマップ効果の仕組みにより、含まれているものの目に見える部分にのみ適用されます。

于 2009-11-10T22:50:31.577 に答える
3

これはうまくいくはずです

<Image Width="45" Grid.Column="0" Source="{Binding Photo}" 
    <Image.Clip>
        <RectangleGeometry Rect="0,0,45,55" RadiusX="8" RadiusY="8" />
    </Image.Clip>
    <Image.Effect>
        <DropShadowEffect Color="Black" BlurRadius="20" />
    </Image.Effect>
</Image>

ただし、Clipと組み合わせて試したことはありません。

更新:それは機能しません(バグのようですか?)

私はこれをするだけです:

<Border Grid.Column="0" >
     <Border.Effect>
          <DropShadowEffect />
     </Border.Effect>
    <Image Width="45" Source="{Binding Photo}" 
        <Image.Clip>
            <RectangleGeometry Rect="0,0,45,55" RadiusX="8" RadiusY="8" />
        </Image.Clip>
    </Image>
</Border>

少し足りないので、幅の一部を微調整して正確に一致させる必要があるかもしれませんが、アイデアは得られます。

于 2009-11-10T18:51:59.283 に答える
0

答えは、Image.Clipの代わりにCroppedBitmapを使用する必要があるということだと思います。

<Image Width="45">
    <Image.Source>
        <CroppedBitmap Source="{Binding Photo}" SourceRect="0 0 45 55"/>
    </Image.Source>
    <Image.Effect>
        <DropShadowEffect/>
    </Image.Effect>
</Image>

丸い角が必要な場合は、外側の画像を境界線で囲み、ImageBrushを使用できます。

<Border Width="45" Height="55" CornerRadius="10" >
    <Border.Background>
        <ImageBrush>
            <ImageBrush.ImageSource>
                <CroppedBitmap Source="profile.jpg" SourceRect="0 0 45 55"/>
            </ImageBrush.ImageSource>
        </ImageBrush>    
    </Border.Background>
</Border>

私が間違っているか、もっと簡単な方法でそれを行うことができる場合は、私を訂正してください。ありがとう!

更新:どうやらあなたはCroppedBitmapのSourceプロパティにバインドすることはできません!

于 2009-11-10T19:55:16.557 に答える