1

我认为这不太可能,但值得一试,看看你们怎么说。我正在尝试在 C# 中创建一个半椭圆按钮(不是 XAML,可能通过另一个曲线球)。如果我想要按钮的预定大小,我会使用图像或类似的东西,但由于大小发生变化,情况并非如此。这里有更多细节:

  1. 我有一个带有 x 半径和 y 半径(或宽度和高度,分别乘以 2)的椭圆。

  2. 我想要两个按钮来填充整个椭圆,每个按钮占据椭圆的一半。

  3. 我不想要超出椭圆并被剪辑到父级的矩形按钮,我想要实际的椭圆按钮,除了每个按钮只有一半椭圆。

  4. 如果这不能使用按钮完成,而是使用其他一些控件,那么我希望该控件能够像按钮一样工作。

任何帮助或建议或指示都会有很大帮助。

4

3 回答 3

4

在我回答这个问题之前,我很想知道为什么你必须在 WPF 应用程序中避免使用 XAML?无论如何,您几乎肯定会间接使用 XAML,所以为什么不使用它 - 让您的按钮变得轻而易举!这正是它的用途!

这就像当你站在砖头和砂浆旁边时试图用胶带盖房子一样!:)

于 2009-01-29T16:08:10.673 回答
0

使用 XAML,说真的 XAML 乍一看可能会让人望而生畏,但它完全不像你试图在背后的代码中这样做而为自己创造的头痛。

自定义 WPF 按钮样式

使用 Blend 进行造型的分步介绍

XAML 级别 100

于 2009-01-29T16:29:53.610 回答
0

您必须添加其他触发器(例如 IsPressed),但这应该会给您一个很好的主意:

<Button Height="30" Width="30">
    <Button.Style>
        <Style TargetType="{x:Type Button}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate>
                        <Path Name="HalfEllipse" Stroke="Black" StrokeThickness="1" Fill="Blue">
                            <Path.Data>
                                <PathGeometry>
                                    <PathFigure IsFilled="True" StartPoint="0,0">
                                        <PolyBezierSegment Points="5,30 25,30 30,0" />
                                    </PathFigure>
                                </PathGeometry>
                            </Path.Data>
                        </Path>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsMouseOver" Value="True">
                                <Setter TargetName="HalfEllipse" Property="Fill">
                                    <Setter.Value>
                                        <SolidColorBrush Color="Green"/>
                                    </Setter.Value>
                                </Setter>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </Button.Style>
</Button>

有关更多信息,请参阅此页面:http: //www.codeproject.com/KB/WPF/glassbuttons.aspx

于 2010-07-28T19:47:43.427 回答