2009-01-29 124 views
1

我不認爲這很有可能,但它值得一試,看看你們說什麼。我試圖在C#中創建一個半橢圓按鈕(不是XAML,可能通過另一個曲線球)。如果我想爲按鈕預先確定尺寸,我只會使用圖片或類似的東西,但這不是尺寸變化後的情況。下面是更詳細地:WPF:創建半橢圓按鈕

  1. 我有X半徑和Y半徑(或寬度和高度,由2乘以尊敬)的橢圓形。

  2. 我想要兩個按鈕來填充整個橢圓,每個橢圓佔據橢圓的一半。

  3. 我不想要矩形按鈕,擴展超出橢圓,並削減到父,我想要實際的橢圓形按鈕,除了每個按鈕只有一半的橢圓。

  4. 如果不能使用按鈕來完成,但使用其他控件,那麼我希望該控件能夠像按鈕一樣工作。

任何幫助或建議或指針將大大幫助。

回答

4

在我回答這個問題之前,我很想知道爲什麼您必須避免使用XAML,在WPF應用程序中?你幾乎肯定會間接地使用XAML,所以爲什麼不使用它 - 讓你的按鈕應該是小菜一碟!這正是它的目的!

這就好比當你站在磚和灰泥旁邊時,想要用膠帶做房子! :)

+0

整個橢圓的大小發生變化。假設某人放置了一行代碼,如myEllipse.xRadius = 40;每個按鈕的寬度基本上都在按鈕的中心大部分爲40。如果類似的東西可以使用純XAML,那麼這將起作用。 – Nick 2009-01-29 16:14:05

+0

是的!這將工作。 XAML非常適合這種佈局。你可以很容易地做到這一點,只需公開一個Radius屬性,然後在該集合中,將radius * 2應用到基本控件寬度,並且如果正確設置了該控件,控件將自動調整大小! :) – 2009-01-29 16:17:49

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