窗体界面如下:
界面设计代码如下:
<Window xmlns:dui="clr-namespace:WPF.DazzleUI.Controls;assembly=WPF.DazzleUI"
MouseLeftButtonDown="Window_MouseLeftButtonDown" ResizeMode="NoResize" Loaded="ColorWindow_Loaded">
<Grid Margin="0,0,39,0">
<Grid.RowDefinitions>
<RowDefinition Height="28" />
<RowDefinition Height="28" />
<RowDefinition Height="28" />
<RowDefinition Height="28" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="65*" />
<ColumnDefinition Width="210*" />
<ColumnDefinition Width="10*" />
</Grid.ColumnDefinitions>
<Label Grid.Row="0" HorizontalContentAlignment="Right" Visibility="Collapsed">透明度:</Label>
<Label Grid.Row="1" HorizontalContentAlignment="Right" Foreground="Black" FontSize="14">红色:</Label>
<Label Grid.Row="2" HorizontalContentAlignment="Right" Foreground="Black" FontSize="14">绿色:</Label>
<Label Grid.Row="3" HorizontalContentAlignment="Right" Foreground="Black" FontSize="14">蓝色:</Label>
<Slider Grid.Row="0" Grid.Column="1" Margin="3" Name="a" SmallChange="1"
LargeChange="15" Maximum="255" Value="255" Visibility="Collapsed"/>
<Slider Grid.Row="1" Grid.Column="1" Margin="3" Name="r" SmallChange="1"
LargeChange="15" Maximum="255" Value="255" />
<Slider Grid.Row="2" Grid.Column="1" Margin="3" Name="g" SmallChange="1"
LargeChange="15" Maximum="255" Value="255" />
<Slider Grid.Row="3" Grid.Column="1" Margin="3" Name="b" SmallChange="1"
LargeChange="15" Maximum="255" Value="255" />
<Button x:Name="button" Content="确定" HorizontalAlignment="Left" Margin="410,174,0,0" Grid.Row="4" VerticalAlignment="Top" Width="75" Click="button_Click" Grid.Column="1" FontSize="20" Background="#FFF7830E"/>
</Grid>
</Window>
public override void EndInit()
{
a.ValueChanged += new RoutedPropertyChangedEventHandler<double>(a_ValueChanged);
r.ValueChanged += new RoutedPropertyChangedEventHandler<double>(r_ValueChanged);
g.ValueChanged += new RoutedPropertyChangedEventHandler<double>(g_ValueChanged);
b.ValueChanged += new RoutedPropertyChangedEventHandler<double>(b_ValueChanged);
base.EndInit();
}
public static Color SelectColor { get; set; }
private void a_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
SelectColor = Color.FromArgb((byte)a.Value, (byte)r.Value, (byte)g.Value, (byte)b.Value);
ColorChangeEvent(SelectColor);
//ColorSee.Fill = new SolidColorBrush(SelectColor);
ColorWindow.Background = new SolidColorBrush(SelectColor);
}
private void r_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
SelectColor = Color.FromArgb((byte)a.Value, (byte)r.Value, (byte)g.Value, (byte)b.Value);
ColorChangeEvent(SelectColor);
//ColorSee.Fill = new SolidColorBrush(SelectColor);
ColorWindow.Background = new SolidColorBrush(SelectColor);
}
private void g_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
SelectColor = Color.FromArgb((byte)a.Value, (byte)r.Value, (byte)g.Value, (byte)b.Value);
ColorChangeEvent(SelectColor);
//ColorSee.Fill = new SolidColorBrush(SelectColor);
ColorWindow.Background = new SolidColorBrush(SelectColor);
}
private void b_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
SelectColor = Color.FromArgb((byte)a.Value, (byte)r.Value, (byte)g.Value, (byte)b.Value);
ColorChangeEvent(SelectColor);
//ColorSee.Fill = new SolidColorBrush(SelectColor);
ColorWindow.Background = new SolidColorBrush(SelectColor);
}
public event Action<Color> ColorChangeEvent;
private void button_Click(object sender, RoutedEventArgs e)
{
r.Value = r.Value;
g.Value = g.Value;
b.Value = b.Value;
GlobalData.r = r.Value;
GlobalData.g = g.Value;
GlobalData.b = b.Value;
GlobalData.SelectColor = SelectColor;
this.Hide();
MainWindow main = new MainWindow();
main.ShowDialog();
}
private void ColorWindow_Loaded(object sender, RoutedEventArgs e)
{
r.Value = GlobalData.r;
g.Value = GlobalData.g;
b.Value = GlobalData.b;
}
在全局变量里面:
public static double r;
public static double g;
public static double b;
public static Color SelectColor { get; set; }
给其他窗体在加载事件里面给背景颜色附上全局变量颜色的值,以主窗体为例:
if(GlobalData.SelectColor.A != 0)
{
grid1.Background = new SolidColorBrush(GlobalData.SelectColor);
grid.Background = new SolidColorBrush(Colors.Black);
frmMainBorder.Background = new SolidColorBrush(GlobalData.SelectColor);
}
效果如下: