C# 将图像转换为按钮WPF
我知道我可以在一个按钮上叠加一个图像,但是一个按钮是否可能具有图像的精确大小?换句话说,我想去掉矩形按钮,使其适应图像的大小和形状。您可以如下设置按钮的模板:C# 将图像转换为按钮WPF,c#,wpf,C#,Wpf,我知道我可以在一个按钮上叠加一个图像,但是一个按钮是否可能具有图像的精确大小?换句话说,我想去掉矩形按钮,使其适应图像的大小和形状。您可以如下设置按钮的模板: <Button > <Image Source="pan-left.png"/> <Button.Template> <ControlTemplate TargetType="Button"> &
<Button >
<Image Source="pan-left.png"/>
<Button.Template>
<ControlTemplate TargetType="Button">
<ContentPresenter Content="{TemplateBinding Content}"/>
</ControlTemplate>
</Button.Template>
</Button>
TemplateBinding
用于设置Content
属性,以便设置ControlTemplate内的内容,因为您可以将此ControlTemplate
移动到资源
中,并可将其用于多个按钮,您可以设置按钮本身的内容。请选中此项
您可以重新设置按钮的模板
<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>
在上述代码中,您正在对图像路径进行硬编码。如果要重用模板,请尝试以下代码。有两种方法 如果您正在项目中嵌入图像,请单击下面的按钮
<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>
当我使用此代码时,图像根本不显示。这很有效。如何获得图像被“按下”的效果(需要显示被按下的图像),因为您更换了按钮模板,您必须自己在模板中重新实现所有这些效果(按下、鼠标悬停、聚焦等)。有很多例子可以说明如何做到这一点。