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 ではありませんでした)...
ありがとう!