0

我有要旋转的按钮和形状(六边形)。但我不希望它的背景被旋转。如何将图像放置到旋转的六边形按钮?这是我的代码:

<Button Height="182" Width="155" RenderTransformOrigin="0.5,1.368">
    <Button.Background>
        <ImageBrush ImageSource="mob.png"/>
    </Button.Background>
    <Button.RenderTransform>
        <TransformGroup>
            <ScaleTransform/>
            <SkewTransform/>
            <RotateTransform Angle="270"/>
            <TranslateTransform X="187.488" Y="-187.488"/>
        </TransformGroup>
    </Button.RenderTransform>

    <Button.Template>
        <ControlTemplate>
              <ed:RegularPolygon Fill="{TemplateBinding Background}"/>
          </ControlTemplate>
     </Button.Template>
 </Button>
4

2 回答 2

0

我可以建议您创建一个 ControlTemplate 来处理您在这里所追求的一切吗?

在模板中确保绘制多边形,然后将其旋转到所需的任何值,然后将 ContentPresenter 控件添加到模板中。这应该绘制按钮的任何内容。在您的案例中,我会将 mod.png 设为内容。

绑定 ContentPrester 需要使用 TemplateBinding,如下所示。

<!-- DRAW HEXAGON HERE -->
<ContentPresenter Conent="{TemplateBinding Content}"/>

并确保将任何旋转应用于六边形而不是内容。

于 2013-04-16T15:59:16.897 回答
0

您不能使用RenderTransform按钮上的 a 来执行此操作,因为这会旋转整个填充的多边形。ed:RegularPolygon您可以将 aPath与包含折线的几何图形一起使用,例如a PathGeometry

<Button Height="182" Width="155">
    <Button.Background>
        <ImageBrush ImageSource="mob.png"/>
    </Button.Background>

    <Button.Template>
        <ControlTemplate>
            <Path Fill="{TemplateBinding Background}">
                <Path.Data>
                    <PathGeometry>
                        <PathGeometry.Transform>
                            ... put transform here ...
                        </PathGeometry.Transform>
                        <PathGeometry.Figures>
                            ... put polyline data here ...
                        </PathGeometry.Figures>
                    </PathGeometry>
                </Path.Data>
            </Path>
        </ControlTemplate>
    </Button.Template>
</Button>
于 2013-04-16T17:20:05.820 回答