将图像转换为按钮WPF

时间:2013-09-20 05:38:25

标签: c# wpf

据我所知,我可以在按钮上叠加图像,但按钮是否可以采用图像的确切尺寸?换句话说,我想摆脱矩形按钮,使其适应图像的大小和形状。

3 个答案:

答案 0 :(得分:7)

您可以设置模板按钮,如下所示:

    <Button >
        <Image Source="pan-left.png"/>
        <Button.Template>
            <ControlTemplate TargetType="Button">
                <ContentPresenter Content="{TemplateBinding Content}"/>
            </ControlTemplate>
        </Button.Template>
    </Button>

TemplateBinding用于设置Content属性,以便在ControlTemplate中设置内容,因为您可以将此ControlTemplate移至Resources并可以使用它对于多个按钮,您可以在按钮本身上设置内容

答案 1 :(得分:1)

选中Question

您可以重新模板按钮。

<Button x:Name="btn16x16">
    <Button.Template>
        <ControlTemplate>
            <Border HorizontalAlignment="Center" VerticalAlignment="Center" >
                <Image Source="pack://siteoforigin:,,,/Resources/SixteenBySixteen.png" 
                       Width="16" 
                       Height="16"/>
            </Border>
        </ControlTemplate>
    </Button.Template>
</Button>

答案 2 :(得分:0)

在上面的代码中,您正在对图像路径进行硬编码。如果要重用模板,请尝试使用此代码。有两种方式。

如果您在下面的项目中嵌入图像。

<Button Tag="Images\Grapes.png" Background="Black" Foreground="white" Focusable="False" Width="100" Height="30">
        <Button.Template>
            <ControlTemplate TargetType="Button">                    
                <Image Source="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=Tag}" />
            </ControlTemplate>
        </Button.Template>
    </Button>

如果您使用绝对路径将图像作为项目中的内容添加到下面的代码中。

<Button Tag="pack://siteoforigin:,,,/Apple.png">
        <Button.Template>
            <ControlTemplate>
                <Border HorizontalAlignment="Center" VerticalAlignment="Center">
                    <Image Source="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=Tag}" Stretch="None" />                        
                </Border>
            </ControlTemplate>
        </Button.Template>
    </Button>