我不认为这是可能的,但它值得一试看看你们说的话。我想在C#中创建一个半椭圆按钮(不是XAML,可能是通过另一个曲线球)。如果我想要按钮的预定尺寸,我会使用图像或类似的东西,但事实并非如此,因为尺寸会发生变化。这里有更多细节:
我有一个椭圆,x半径和y半径(或宽度和高度,分别乘以2)。
我想要两个按钮来填充整个椭圆,每个椭圆占据椭圆的一半。
我不希望矩形按钮延伸到椭圆之外并被剪裁到父级,我想要实际的椭圆形按钮,除了每个按钮只有椭圆的一半。
如果不能使用按钮完成,但使用其他控件,那么我希望该控件能够像按钮一样工作。
任何帮助或建议或指示都会有很大帮助。
答案 0 :(得分:4)
在我回答这个问题之前,我想知道为什么你必须在WPF应用程序中避免使用XAML?你几乎肯定会间接使用XAML,所以为什么不使用它 - 让你的按钮应该是小菜一碟!这正是它的用途!
当你站在砖头和砂浆旁边时,这就像试图用胶带做房子! :)
答案 1 :(得分:0)
使用XAML,严重的XAML起初可能看起来令人生畏,但这并不是你为自己创造的头痛,试图在后面的代码中完全做到这一点。
答案 2 :(得分: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