2015-10-12 98 views
0

這是一個非常基本的問題。 我希望能夠添加一個形狀來定義填充和筆劃的不透明度。 如果我補充一點:WPF形狀中風和填充不同的不透明度

Ellipse e = new Ellipse(); 
e.Width = e.Height = 150; 
e.Stroke = Brushes.Aqua; 
e.Fill = Brushes.Chartreuse; 
e.StrokeThickness = 20; 
e.Opacity = .25; 
plotCanvas.Children.Add(e); 

我只能設置1層的不透明度。相反,我希望填充爲0.25不透明,筆畫爲1.0不透明。 謝謝 帕特里克

+0

告訴我們你想做什麼?它可能有完全不同的解決方案。 – niksofteng

回答

5

設置橢圓上的不透明度將設置整個控件的不透明度。你想要做的是創造填充和描邊專用的刷子,並控制對畫筆的不透明度,即:

SolidColorBrush strokeBrush = new SolidColorBrush(Colors.Aqua); 
strokeBrush.Opacity = .25d; 

或者,你可以控制筆刷的Alpha通道:

SolidColorBrush strokeBrush = new SolidColorBrush(Color.FromArgb(/*a, r, g, b*/)); 
0
<Ellipse Stroke="Red" Width="200" Height="100" StrokeThickness="5"> 
    <Ellipse.Fill> 
     <SolidColorBrush Color="Green" Opacity=".25"></SolidColorBrush> 
    </Ellipse.Fill> 
</Ellipse> 

或者在C#中,你可以將填充設置爲與Opacity屬性所需的不透明性的新的SolidColorBrush。

-1

您無法爲單個Shape對象設置兩次不透明度。設置不透明度的Insteaf兩次,你可以將邊框添加到您的橢圓:

<Canvas x:Name="MyCanvas" Width="1000" Height="1000" Background="White"> 
    <Border BorderBrush="Black" Opacity="1" BorderThickness="10" CornerRadius="{Binding RelativeSource={RelativeSource Self}, Path=ActualHeight}"> 
     <Ellipse Height="150" Width="150" Fill="Black" Opacity="0.25"></Ellipse> 
    </Border> 

但由於邊界是封閉的橢圓形的矩形,你還需要設置cornerradius