0

Microsoft.Expression.Controls.Calloutを使用して、にcalloutオブジェクトをペイントしていCanvasます。ほとんどの場合、以下のように問題なく表示されます。
普通

ただし、サイズを変更すると、アンカーポイント(およびドロップシャドウの一部)が何らかの形で切り取られます。

切り落とす

SnapToDevicePixelsなど、さまざまなプロパティを設定しようとしましたがUseLayoutRounding、今のところ何も機能しません。

XAMLは次のとおりです(calloutオブジェクトは、 :CalloutElementから継承するという名前のコントロールのテンプレートとして使用されます。Control

<Style TargetType="{x:Type Editor:CalloutElement}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type Editor:CalloutElement}">
                <ed:Callout CalloutStyle="RoundedRectangle" Fill="#FFF"
                            StrokeThickness="2"
                            AnchorPoint="0.5 1.4">
                    <ed:Callout.Effect>
                        <DropShadowEffect BlurRadius="10" Opacity="0.5"/>
                    </ed:Callout.Effect>
                    <ed:Callout.Stroke>
                        <SolidColorBrush Color="Red" />
                    </ed:Callout.Stroke>
                </ed:Callout>

                <!-- More XAML for resize adorner -->

            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

サイズ変更の装飾者は、コールアウトのサイズを変更できるように、隅に楕円を表示しているように見えることに注意してください。装飾者のコードは、Widthとのを変更するだけHeightですCalloutElement

これが発生する理由とそれを修正する方法について何か考えはありますか?どんな助けでも大歓迎です。

4

2 に答える 2

1

メソッドをオーバーライドすることでこれを解決しましたGetLayoutClip()。はい、ハックですが、今のところ問題なく動作します。より良い解決策があるかどうかを知りたいです。

protected override Geometry GetLayoutClip(Size layoutSlotSize)
{
    return null;
}
于 2012-08-27T23:18:37.377 に答える