2011-08-29 239 views
4

我一直試圖在WPF中創建一個自定義加號按鈕。我只想要+符號,但我沒有任何運氣讓Path數據變量恰到好處。我已經看過了Path語法,但我仍然遇到了麻煩。在WPF中創建自定義「+」按鈕

這是我迄今爲止,但實在是太大了。我需要一個更小,更比例的按鈕:

<Path 
     Stretch="Fill" 
     Opacity="1" 
     x:Name="path" 
     StrokeThickness="10" 
     RenderTransformOrigin="0.5,0.5" Margin="39,56.75,39,65.25" Data="M0,5L10,5 M5,5L5,1z" > 

任何人都可以告訴我我在這裏有什麼錯嗎?

感謝

+0

所示的加號按鈕。如果「+」只是過大,使用ScaleTransform 。 –

回答

3

嘗試了這一點的路徑 -

<Path Stretch="Fill" 
     Fill="Black" 
     Stroke="{x:Null}" 
     StrokeThickness="0.5" 
     Data="M3.875,0 L5.125,0 5.125,3.875 9,3.875 9,5.125 5.125,5.125 5.125,9 3.875,9 3.875,5.125 0,5.125 0,3.875 3.875,3.875 3.875,0 z" /> 
+0

謝謝,這是我所需要的。你是怎麼想出所有這些要點的? – Encryption

+0

@加密:我手工猜測,可能是試驗和錯誤。或者他們以72寬度/高度開始,使有效的交叉線寬度爲10,並從那裏做數學,當它們完成時除以8。它追蹤「+」形狀的邊緣。如果將這些座標用手繪製在紙上,形狀將變得更加明顯。 –

7

可以使用Data屬性這樣

<Button> 
    <Path Data="M0.5,0 L0.5,1 M0,0.5 L1,0.5" 
      StrokeThickness="4" 
      Stretch="Fill" 
      Stroke="Red" /> 
</Button> 

貌似這個

enter image description here

編輯
如果你想在管線蓋到達的邊緣你可以設置

StrokeEndLineCap="Square" 
StrokeStartLineCap="Square" 
+0

感謝這也爲我工作。不知道爲什麼您的解決方案的數據點比RV1987少。我無法理解路徑標記如何工作​​我猜。 – Encryption

+1

它們是相對點,所以無論它有多大,十字將總是伸展以填充「Button」。只需要四個值。 1.移至(x,y)(0.5,0)。 2.畫線到(x,y)(0.5,1)。你有垂直線。然後將指針移動到(x,y)(0,0.5)並畫一條線到(x,y)(1,0.5)。有你的水平線 –

+0

@Encryption:這使用筆畫創建十字架本身,它只需要兩條線段。 RV1987的答案描繪了十字的輪廓,它要求你指定十字(十二)邊緣周圍的所有線段。這個答案在兩條線段之間拾取筆,而RV1987的答案沒有拿起筆(它不需要,因爲它們是端對端連接的)。 –

5

我知道這似乎是愚蠢的,但對於剛剛使用包含在一個大的字體大小+字符一個TextBlock?

+0

+1;這是一個很好的選項,它使按鈕看起來像Firefox的「新標籤」按鈕。我也推薦粗體字體。 –

+0

這將工作,但我需要按鈕有動畫像我的其他按鈕做。使用story_board來獲取我想要的動畫類型將不適用於您所描述的內容 – Encryption

7

我知道你想使用繪圖路徑,可能會想這應該是一個解決方案。該解決方案可能會有助於您未來的工作。但是這裏有一個替代方案,它可能比您要求的解決方案更受歡迎。

我一直試圖在WPF

創建自定義的加號按鈕既然沒有「加號按鈕」控件,無論你做,當然會被定製。但是,您不必完全重新發明輪子。 Windows中已經使用了+圖標。

除非您的應用程序具有完全自定義的用戶界面,否則建議重新使用控件和圖像來製作統一的用戶體驗。

要看看如何將這些現有的圖標,看看這個答案:Default icons for Windows applications?

答案是指被與Visual Studio安裝了Zip文件。從該zip文件中查看該圖標:

VS2010ImageLibrary/_Common Elements/Actions/Add。PNG

"Add" icons

還有其他的 「添加」 圖標型下:

VS2010ImageLibrary /操作/ png_format/WinVista
VS2010ImageLibrary /對象/ png_format/WinVista

"Plus" icon "Add Category" icon "Add File" icon

若要使用您的按鈕圖像:

+1

這將工作,但我需要按鈕有動畫像我的其他按鈕一樣。使用story_board來獲取我想要的動畫類型將不適用於您所描述的 – Encryption

+0

@Encryption:夠公平:) –

+0

@ MerlynMorgan-Graham是否有任何方法將它們從xaml中引用爲靜態類,如窗口暴露? –

0

對於任何人誰發現這個頁面,以下路徑:

     <Path x:Name="ButtonPath" 
           Margin="1" 
           Stroke="Gray" 
           StrokeThickness="1" 
           StrokeStartLineCap="Square" 
           StrokeEndLineCap="Square" 
           Stretch="Uniform" 
           VerticalAlignment="Center" 
           HorizontalAlignment="Center" 

          > 

          <Path.Data> 
          <PathGeometry> 
           <PathGeometry.Figures> 
            <PathFigure StartPoint="0,100"> 
             <LineSegment Point="0,-100"/> 
            </PathFigure> 
            <PathFigure StartPoint="100,0"> 
             <LineSegment Point="-100,0"/> 
            </PathFigure> 
           </PathGeometry.Figures> 
          </PathGeometry> 
         </Path.Data> 
        </Path> 

讓我在這個快照我的程序 Plus Button SnapShot