2

PanZoomImage次のように定義されたクラスがあります。

<Border Grid.Row="0" Name="border" ClipToBounds="True">
    <Canvas Name="canvas">
        <Image Name="image" RenderOptions.BitmapScalingMode="NearestNeighbor" Stretch="None" 
           Source="{Binding Path=Source}"
           MouseLeftButtonDown="image_MouseLeftButtonDown"
           MouseLeftButtonUp="image_MouseLeftButtonUp"
           MouseMove="image_MouseMove"
           MouseWheel="image_MouseWheel"
           Loaded="image_Loaded">
        </Image>
    </Canvas>
</Border>

画像に Adorners を表示したい場合があるAdornerLayerため、画像に次のプロパティを提供します。

public AdornerLayer Adorners
{
    get
    {
        return AdornerLayer.GetAdornerLayer(image);
    }
}

このプロパティを使用して、さまざまな装飾を画像に追加します。問題は、画像をパンまたはズームすると、 aodrners がクリップされず、次PanZoomImageのように を保持するコントロールの外側に表示されることです。 クリッピングなし

私はいくつかの解決策を試しました:

ClipToBounds=Trueボーダー、キャンバス、画像の設定をしてみました。

と各アドーナーを個別に設定ClipToBounds=Trueしてみました。AdornerLayer

Adorner の OnRender で Clip Geometry を設定してみました。

またIsClipEnabled、Adorner にプロパティがあることに気付きましたが、それを true に設定しようとすると、NullReferenceException が発生し続けました (Adorner は間違いなく null ではありませんでした)...

ありがとう!

4

1 に答える 1