这是一个非常基本的问题。 我希望能够为填充和笔划添加定义不同不透明度的形状。 如果我加上这个:
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 :(得分:5)
在椭圆上设置不透明度将设置整个控件的不透明度。你想要做的是为Fill和Stroke创建专用的画笔,并控制画笔上的不透明度,即:
SolidColorBrush strokeBrush = new SolidColorBrush(Colors.Aqua);
strokeBrush.Opacity = .25d;
或者,您可以控制画笔的Alpha通道:
SolidColorBrush strokeBrush = new SolidColorBrush(Color.FromArgb(/*a, r, g, b*/));
答案 1 :(得分:3)
<Ellipse Stroke="Red" Width="200" Height="100" StrokeThickness="5">
<Ellipse.Fill>
<SolidColorBrush Color="Green" Opacity=".25"></SolidColorBrush>
</Ellipse.Fill>
</Ellipse>
或者在C#中,您可以将填充设置为具有Opacity属性所需不透明度的新SolidColorBrush。
答案 2 :(得分:-2)
您无法为单个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>
但是由于Border是一个包围椭圆的矩形,你还需要设置cornerradius