WPF 颜色生成器
1.界面设计
<Window x:Class="WpfApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp"
Icon="https://demosc.chinaz.net/Files/pic/iconsico/8254/e10.ico"
mc:Ignorable="d"
Title="颜色生成器" Height="300" Width="600" WindowStartupLocation="CenterScreen">
<Window.Resources>
<Color B="100" G="100" R="100" A="100" x:Key="myColor"/>
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Rectangle x:Name="dispRect" Stroke="DarkGreen" StrokeThickness="5" Fill="White" Grid.Column="1" Grid.Row="1" Grid.ColumnSpan="2" Height="100" Margin="20,10,20,10" Cursor="Hand"/>
<StackPanel Grid.Column="0" Grid.Row="0" Orientation="Horizontal">
<TextBlock FontSize="12" Margin="10,30,5,20" Padding="10">红</TextBlock>
<Slider Orientation="Vertical" Value="0" Height="80" Maximum="255" Minimum="0" TickPlacement="BottomRight" TickFrequency="10" IsSnapToTickEnabled="True" Margin="0,0,5,0" AutoToolTipPlacement="BottomRight" AutoToolTipPrecision="2" ValueChanged="OnRedSliderValueChange"/>
</StackPanel>
<StackPanel Grid.Column="1" Grid.Row="0" Orientation="Horizontal">
<TextBlock FontSize="12" Margin="10,30,5,20" Padding="10">绿</TextBlock>
<Slider Orientation="Vertical" Value="0" Height="80" Maximum="255" Minimum="0" TickPlacement="BottomRight" TickFrequency="10" IsSnapToTickEnabled="True" Margin="0,0,5,0" AutoToolTipPlacement="BottomRight" AutoToolTipPrecision="2" ValueChanged="OnGreenSliderValueChange"/>
</StackPanel>
<StackPanel Grid.Column="2" Grid.Row="0" Orientation="Horizontal">
<TextBlock FontSize="12" Margin="10,30,5,20" Padding="10">蓝</TextBlock>
<Slider Orientation="Vertical" Value="0" Height="80" Maximum="255" Minimum="0" TickPlacement="BottomRight" TickFrequency="10" IsSnapToTickEnabled="True" Margin="0,0,5,0" AutoToolTipPlacement="BottomRight" AutoToolTipPrecision="2" ValueChanged="OnBlueSliderValueChange"/>
</StackPanel>
<StackPanel Grid.Column="3" Grid.Row="0" Orientation="Horizontal">
<TextBlock FontSize="12" Margin="10,30,5,20" Padding="10">透明度</TextBlock>
<Slider Orientation="Vertical" Value="0" Height="80" Maximum="255" Minimum="0" TickPlacement="BottomRight" TickFrequency="10" IsSnapToTickEnabled="True" Margin="0,0,5,0" AutoToolTipPlacement="BottomRight" AutoToolTipPrecision="2" ValueChanged="OnOpacitySliderValueChange"/>
</StackPanel>
</Grid>
</Window>
Slider控件的一些属性简单介绍:
Orientation="Vertical" System.Windows.Controls.Slider.Orientation 值之一。 默认值为 System.Windows.Controls.Orientation.Horizontal。
Value="0" 获取或设置范围控件的当前数量。
Height="80" 获取或设置元素的建议高度。
Maximum="255" 获取或设置的最大可能 System.Windows.Controls.Primitives.RangeBase.Value 范围元素。
Minimum="0" 获取或设置 System.Windows.Controls.Primitives.RangeBase.Minimum 可能 System.Windows.Controls.Primitives.RangeBase.Value 范围元素。
TickPlacement="BottomRight" 获取或设置与 System.Windows.Controls.Primitives.Track 的 System.Windows.Controls.Slider 相关的刻度线的位置。
TickFrequency="10" 获取或设置刻度线之间的间隔。
IsSnapToTickEnabled="True" 获取或设置一个值,该值指示 System.Windows.Controls.Slider 是否自动将 System.Windows.Controls.Primitives.Track.Thumb 移动到最近的刻度线。
Margin="0,0,5,0" 获取或设置元素的外边距。
AutoToolTipPlacement="BottomRight" 获取或设置在按下 System.Windows.Controls.Primitives.Track.Thumb 时是否显示包含 System.Windows.Controls.Slider 的当前值的工具提示。 如果显示工具提示,此属性还指定工具提示的位置。
AutoToolTipPrecision="2" 工具提示中显示的 System.Windows.Controls.Primitives.RangeBase.Value 的精度,由小数点右侧显示的小数位数指定。默认值为零 (0)。
ValueChanged="OnRedSliderValueChange" 范围值更改时发生。
2.C#代码
using System;
using System.Windows;
using System.Windows.Media;
namespace WpfApp
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
double lRed = 0;
double lGreen = 0;
double lBlue = 0;
double lOpacity = 255;
public MainWindow()
{
InitializeComponent();
}
private void OnRedSliderValueChange(object sender, RoutedPropertyChangedEventArgs<double> e)
{
lRed = e.NewValue;
Color clr = new Color();
clr.R = Convert.ToByte(lRed);
clr.G = Convert.ToByte(lGreen);
clr.B = Convert.ToByte(lBlue);
clr.A = Convert.ToByte(lOpacity);
dispRect.Fill = new SolidColorBrush(clr);
}
private void OnGreenSliderValueChange(object sender, RoutedPropertyChangedEventArgs<double> e)
{
lGreen = e.NewValue;
Color clr = new Color();
clr.R = Convert.ToByte(lRed);
clr.G = Convert.ToByte(lGreen);
clr.B = Convert.ToByte(lBlue);
clr.A = Convert.ToByte(lOpacity);
dispRect.Fill = new SolidColorBrush(clr);
}
private void OnBlueSliderValueChange(object sender, RoutedPropertyChangedEventArgs<double> e)
{
lBlue = e.NewValue;
Color clr = new Color();
clr.R = Convert.ToByte(lRed);
clr.G = Convert.ToByte(lGreen);
clr.B = Convert.ToByte(lBlue);
clr.A = Convert.ToByte(lOpacity);
dispRect.Fill = new SolidColorBrush(clr);
}
private void OnOpacitySliderValueChange(object sender, RoutedPropertyChangedEventArgs<double> e)
{
lOpacity = e.NewValue;
Color clr = new Color();
clr.R = Convert.ToByte(lRed);
clr.G = Convert.ToByte(lGreen);
clr.B = Convert.ToByte(lBlue);
clr.A = Convert.ToByte(lOpacity);
dispRect.Fill = new SolidColorBrush(clr);
}
}
}
3.结果展示
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!