Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 创建具有一个圆角的自定义形状按钮_C#_Wpf_Wpf Controls - Fatal编程技术网

C# 创建具有一个圆角的自定义形状按钮

C# 创建具有一个圆角的自定义形状按钮,c#,wpf,wpf-controls,C#,Wpf,Wpf Controls,我需要在WPF中创建一个具有自定义形状的按钮。具体来说,我希望它有圆角,比如椭圆。这是一张照片: 只有黑色区域应为点击目标;白色区域应该是透明的 我将如何在WPF中创建具有这种自定义形状的按钮控件?我知道如何创建一个常规的矩形按钮,但不是像这样的圆角按钮。您可以使用ControlTemplate来实现这一点: <Style x:Key="ButtonStyle" TargetType="{x:Type Button}"> <Setter Property="B

我需要在WPF中创建一个具有自定义形状的按钮。具体来说,我希望它有圆角,比如椭圆。这是一张照片:

只有黑色区域应为点击目标;白色区域应该是透明的


我将如何在WPF中创建具有这种自定义形状的按钮控件?我知道如何创建一个常规的矩形按钮,但不是像这样的圆角按钮。

您可以使用ControlTemplate来实现这一点:

<Style x:Key="ButtonStyle" TargetType="{x:Type Button}">
        <Setter Property="Background" Value="Black"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Button}">
                    <Path Fill="{TemplateBinding Background}"
                            Data="M 0,0 A 100,100 90 0 0 100,100 L 100,100 100,0" />
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

然后将其应用于按钮:

<Button Style="{StaticResource ButtonStyle}"/>
<Button Style="{StaticResource ButtonStyle}" Foreground="White">
        test
    </Button>

如果您需要一些参考来绘制“路径”,请检查MSDN链接

更新


要显示内容,应使用ContentPresenter,如下所示:

<Style x:Key="ButtonStyle" TargetType="{x:Type Button}">
        <Setter Property="Background" Value="Black"/>
        <Setter Property="HorizontalAlignment" Value="Center"/>
        <Setter Property="VerticalContentAlignment" Value="Center"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Button}">
                    <Grid>
                        <Path Fill="{TemplateBinding Background}"
                            Data="M 0,0 A 100,100 90 0 0 100,100 L 100,100 100,0" />
                        <ContentPresenter VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                                          HorizontalAlignment="{TemplateBinding HorizontalAlignment}"/>
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

在按钮中:

<Button Style="{StaticResource ButtonStyle}"/>
<Button Style="{StaticResource ButtonStyle}" Foreground="White">
        test
    </Button>

测试

谢谢你,伙计!它起作用了。但是,我想知道如何设置此内容?当我将内容设置为按钮时,它不会显示。要显示内容,应插入一个ContentPresenter。此问题已在Meta上讨论过:。