WPF 为描边和填充塑造不同的不透明度
WPF shape different opacity for stroke and fill
这是一个非常基本的问题。
我希望能够添加一个形状,为填充和描边定义不同的不透明度。
如果我添加这个:
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 不透明。
谢谢
帕特里克
<Ellipse Stroke="Red" Width="200" Height="100" StrokeThickness="5">
<Ellipse.Fill>
<SolidColorBrush Color="Green" Opacity=".25"></SolidColorBrush>
</Ellipse.Fill>
</Ellipse>
或者在 C# 中,您可以将填充设置为具有所需不透明度的新 SolidColorBrush 属性。
设置椭圆的不透明度将设置整个控件的不透明度。您要做的是为填充和描边创建专用画笔,并控制画笔的不透明度,即:
SolidColorBrush strokeBrush = new SolidColorBrush(Colors.Aqua);
strokeBrush.Opacity = .25d;
或者,您可以控制笔刷的 Alpha 通道:
SolidColorBrush strokeBrush = new SolidColorBrush(Color.FromArgb(/*a, r, g, b*/));
您不能为单个 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
这是一个非常基本的问题。 我希望能够添加一个形状,为填充和描边定义不同的不透明度。 如果我添加这个:
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 不透明。 谢谢 帕特里克
<Ellipse Stroke="Red" Width="200" Height="100" StrokeThickness="5">
<Ellipse.Fill>
<SolidColorBrush Color="Green" Opacity=".25"></SolidColorBrush>
</Ellipse.Fill>
</Ellipse>
或者在 C# 中,您可以将填充设置为具有所需不透明度的新 SolidColorBrush 属性。
设置椭圆的不透明度将设置整个控件的不透明度。您要做的是为填充和描边创建专用画笔,并控制画笔的不透明度,即:
SolidColorBrush strokeBrush = new SolidColorBrush(Colors.Aqua);
strokeBrush.Opacity = .25d;
或者,您可以控制笔刷的 Alpha 通道:
SolidColorBrush strokeBrush = new SolidColorBrush(Color.FromArgb(/*a, r, g, b*/));
您不能为单个 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