Slider 是我们最常见的控件之一,看到最多的一般在两个地方 ,一个是声音的大小,一个是色域。
控制声音大小的网上很多,所以我们挑个控制颜色的,很多画图工具都有。明暗度什么的。
windows phone的 颜色一般采用 ARGB颜色 A 表示透明度,rgb 分别是 red ,green,blue 。种颜色的首先字母。值从0,255.
我们首先画个矩形,然后分别用4个slider控件来控制矩形的颜色。
页面的代码如下:
<Grid x:Name="ContentPanel" Grid.Row="0" Margin="12,0,12,0"> <StackPanel> <Rectangle Name="recBoard" Width="480" Height="300" Fill="#fff" Opacity="{Binding Path=Value, ElementName=sliderTran}" /> <TextBlock>R</TextBlock> <Slider Name="sliderRed" Maximum="255" Minimum="0" ValueChanged="sliderRed_ValueChanged" /> <TextBlock>G</TextBlock> <Slider Name="sliderGreen" Maximum="255" Minimum="0" ValueChanged="sliderGreen_ValueChanged" /> <TextBlock>B</TextBlock> <Slider Name="sliderBlue" Maximum="255" Minimum="0" ValueChanged="sliderBlue_ValueChanged" /> <TextBlock>Transparency</TextBlock> <Slider Name="sliderTran" Maximum="1" Minimum="0" Value="1" /> </StackPanel> </Grid>
效果如图
然后我们切换到代码页面,构建Slider 控件移动的事件触发更改颜色
代码如下:
//初始化 byte red = 0; byte green = 0; byte blue = 0; private void sliderRed_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e) { red = Convert.ToByte(e.NewValue); Color color = Color.FromArgb(255, red, green, blue); SolidColorBrush scb = new SolidColorBrush(color); recBoard.Fill = scb; } private void sliderGreen_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e) { green = Convert.ToByte(e.NewValue); Color color = Color.FromArgb(100, red, green, blue); SolidColorBrush scb = new SolidColorBrush(color); recBoard.Fill = scb; } private void sliderBlue_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e) { blue = Convert.ToByte(e.NewValue); Color color = Color.FromArgb(100, red, green, blue); SolidColorBrush scb = new SolidColorBrush(color); recBoard.Fill = scb; }
OK 非常简单吧。三个事件分别控制 红绿蓝。透明度,我用了另外一种写法直接绑定到 属性Opacity来控制。
启动,模拟器,自己拖动下不同颜色来组成各种颜色。效果如图:
OK 基本上就这多。
源码下载地址:http://download.csdn.net/download/gongkepop/6379697
(写的不好请见谅,有不对请留言告知我,免得误人子弟。)
来点废话吧。停更了好久,说实话是因为自己的惰性。但是后来反省了下,做事情就应该做完。预备的后面还有3大章分别是 存储,网络通信,封装。今天开始争取天天更新,当教材更新完了,各位同学应该可以做些自己的小应用放在自己的手机上跑起来 。好加油。