我有一個圓形的按鈕,我喜歡給它添加一對天使之翼,但我似乎無法正確繪製它。 我想繪製一個邊界,左邊是一個天使翼,右邊是一個天使翼,右邊是一個自定義形狀。WPF自定義形狀的按鈕
自定義形狀是按鈕的邊框。
該按鈕是一個可調整大小的按鈕,這意味着它可以改變高度&寬度與窗口,並仍然保持相同的位置。
這個按鈕僅僅是我迄今爲止所做的一個例子。
我搜索在谷歌的解決方案和這個網站,但無法找到任何可以幫助我..
我有一個圓形的按鈕,我喜歡給它添加一對天使之翼,但我似乎無法正確繪製它。 我想繪製一個邊界,左邊是一個天使翼,右邊是一個天使翼,右邊是一個自定義形狀。WPF自定義形狀的按鈕
自定義形狀是按鈕的邊框。
該按鈕是一個可調整大小的按鈕,這意味着它可以改變高度&寬度與窗口,並仍然保持相同的位置。
這個按鈕僅僅是我迄今爲止所做的一個例子。
我搜索在谷歌的解決方案和這個網站,但無法找到任何可以幫助我..
您可以使用像Inkscape這樣的軟件,並且可以打開大多數圖像格式,並且可以使用跟蹤位圖選項來打開大多數圖像格式以跟蹤路徑。這將在<canvas>
中創建一個<path>
對象。它可以用作背景。
注意事項:
質量在很大程度上取決於圖像源的質量和精度。所以如果你的圖像有很多顏色和漸變,巨大的線條粗細和使用反鋸齒,你會得到非常糟糕的結果,因爲路徑結果中有大量的矢量。如果您使用更細的線條和非常小的顏色而沒有漸變,您可以獲得驚人的轉換結果。
您也可以在圖像上跟蹤並使用該圖像而不是自動選項。你會得到更好的結果,但它需要更多的工作。
創建此路徑後,您可以在應用程序字典中創建資源,並將它用於任何需要的圖標或背景。它可以在任何方向上擴展而不會丟失質量,因爲它現在是一個矢量「圖像」。
嘗試尋找圖像/軟件/其他任何圖像或繪圖方法爲XAML轉換器 你可以創建一個圖像,並將其轉換爲XAML
看http://vectormagic.com
你可以試試這個,如果有幫助
創建自定義控制,這樣的事情
<Grid ClipToBounds="True" HorizontalAlignment="Center" VerticalAlignment="Center">
<ed:Arc x:Name="KnobA" ArcThickness="1" ArcThicknessUnit="Percent" EndAngle="360" Height="120" Stretch="None"
Stroke="Black"
StartAngle="0" Width="120" RenderTransformOrigin="0.5,0.5" StrokeThickness="0">
<ed:Arc.Fill>
<ImageBrush ImageSource="/Gazelle;component/Resources/Images/image.png" Stretch="UniformToFill" />
</ed:Arc.Fill>
</ed:Arc>
</Grid>
用它在你的其他XAML
<controls:BoundRotaryButton Grid.Column="1" Margin="0,0,35,30"
VerticalAlignment="Bottom" HorizontalAlignment="Right" Opacity="0.2"
Grid.ColumnSpan="2"
BoundRotaryButtonState="{Binding myvm.RotaryPressed, Mode=OneWayToSource,
NotifyOnTargetUpdated=True, UpdateSourceTrigger=PropertyChanged}" />
創建後面的代碼的依賴按鈕控件和鼠標點擊處理程序。
public static readonly DependencyProperty KnobAPushButtonStateProperty = DependencyProperty.Register("KnobAPushButtonState", typeof (bool), typeof (KnobA));
public bool KnobAPushButtonState
{
get { return (bool) GetValue(KnobAPushButtonStateProperty); }
set { SetValue(KnobAPushButtonStateProperty, value); }
}
private void KnobA_MouseDown(object sender, MouseEventArgs e)
{
Mouse.Capture(this);
KnobAPushButtonState = true;
private void KnobA_MouseUp(object sender, MouseEventArgs e)
{
Mouse.Capture(null);
KnobAPushButtonState = false;
}
在您的視圖模型,你會知道什麼時候該依賴項屬性修改按鈕被按下或釋放,並調用你所需要的命令。
我有一個像圓形按鈕,你可以旋轉和按等等。但是你可以使用任何你喜歡Blend的形狀。
我已經創建了一個按鈕,我只需要告訴Border Control哪個形狀。 – ArchAngel 2015-04-02 12:26:43
你可以在[Inkscape](https://inkscape.org/en/)中畫出你想要的,並保存爲XAML並直接在你的模板中使用它。檢查還[XDraw](https://xdraw.codeplex.com/) – Franck 2015-04-02 11:41:45
如果我使用Adobe Photoshop CS6創建一個PNG,我可以在Inkscape中使用? Inkscape中的 – ArchAngel 2015-04-02 11:53:59
可以打開大量圖像格式並將它們轉換爲'Path'對象。但質量取決於圖像源的質量和精度。如果你的圖像有顏色和巨大的線條粗細,並且使用了抗鋸齒技術,你將在路徑結果上獲得可怕的巨大量向量。如果你使用小線條和非常小的顏色,沒有漸變,你可以得到驚人的轉換結果。您也可以在圖像上手動追蹤並使用手動追蹤代替自動追蹤(通常效果最好) – Franck 2015-04-02 12:23:52