我正在处理应用程序,它为数据库中的每一行创建一个新的wpf边框组件。这意味着我必须在C#而不是XAML中设置边框组件的样式(据我所知)。除了尝试设置背景不透明度之外,样式都很好。
motherboards.Add(new Border());
Border moboBorder = motherboards[i];
moboBorder.Width = 150;
moboBorder.Height = 150;
moboBorder.BorderBrush = Brushes.Black;
moboBorder.Background = Brushes.White;
moboBorder.CornerRadius = new CornerRadius(10);
moboBorder.Margin = new Thickness(5);
moboBorder.BorderThickness = new Thickness(1);
您可以像这样调整XAML中的背景不透明度
<Border BorderThickness="1" Height="100" Width="100">
<Border.BorderBrush>
<SolidColorBrush Color="Black" Opacity="0.7"/>
</Border.BorderBrush>
</Border>
但正如我所说,我在C#而不是XAML中创建组件。我想这是你在c#
中设置值的方法moboBorder.Background.Opacity = //Value
然而,我无法弄清楚它需要什么样的价值,而不仅仅是一个直线数字,没有什么比我能看到的画笔更像是没有像新的不透明度()
我试过谷歌搜索,但一切都是关于设置整个元素的不透明度,而不仅仅是它的背景。
答案 0 :(得分:6)
double
肯定是“直线上升”;将鼠标悬停在属性上以查看数据类型。
问题(谢谢,Clemens)是你试图设置Brushes.Black
的不透明度,这是一个系统对象而你没有做生意。
但您可以设置自己创建的Opacity
的{{1}}。
要创建一个新的半透明白色画笔:
SolidColorBrush
请参阅Geoff关于如何从RGB三元组(或ARGB四元组)而不是命名颜色创建颜色的答案。
或者只是保留现有画笔,如果你确信你没有从x.Background = new SolidColorBrush(Colors.White) { Opacity = 0.5 };
获得它。
Brushes
如果你这样做,你可以从Background.Opacity = 0.5;
获得它:
System.Brushes
如果您这样做,则不会:
<Window
Background="DeepSkyBlue"
...
DeepSkyBlue是<Window.Background><SolidColorBrush Color="DeepSkyBlue" /></Window.Background>
;你正在用这种颜色创建一个新的画笔。
您应该在XAML中使用绑定执行所有这些操作,而不是在C#中创建WPF控件。孩子,你会睁开眼睛。
但这是你的眼睛。
答案 1 :(得分:2)
正如@Clemens在评论中所指出的那样:
您无法直接设置系统共享画笔的Opacity
。
您需要使用非共享SolidColorBrush
,然后您才能设置Opacity
。
您可以从代码中的任何位置更改Opacity
。
E.g:
moboBorder.Background = new SolidColorBrush(Color.FromRgb(255, 0, 0))
{
Opacity = 0.5 // or whatever opacity between
// 0.0 (0%) and 1.0 (100%)
};
或者
moboBorder.Background = new SolidColorBrush(Color.FromRgb(255, 0, 0));
moboBorder.Background.Opacity = 0.5;
与上面的示例类似,如果您使用的是RGB,也可以设置alpha(不透明度)。
您可以使用Color.FromArgb()
静态方法:
moboBorder.Background = new SolidColorBrush(Color.FromArgb(0.5, 255, 0, 0));
只需使用0.0
和1.0
之间的双倍(如前所述)作为方法的第一个参数。
希望这有帮助。
答案 2 :(得分:2)
相当于XAML
<Border.BorderBrush>
<SolidColorBrush Color="Black" Opacity="0.7"/>
</Border.BorderBrush>
代码背后的将是
moboBorder.Background = new SolidColorBrush
{
Color = Colors.Black,
Opacity = 0.7
};
与Brushes
类中的预定义画笔(frozen)相比,上面的SolidColorBrush可以在以后随时更改,例如
moboBorder.Background.Opacity = 0.5;