zoukankan      html  css  js  c++  java
  • WPF MultiBinding,多值转化器IMultiValueConverter,自制调色板 palette

    public class RGBConverter : IMultiValueConverter
    {
    //正向修改,整合颜色值
    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
    {
    if(values==null || values.Length<1)
    {
    return null;
    }

    byte r = System.Convert.ToByte(values[0]);
    byte g = System.Convert.ToByte(values[1]);
    byte b = System.Convert.ToByte(values[2]);

    Color col = Color.FromRgb(r, g, b);
    SolidColorBrush brush = new SolidColorBrush(col);
    return brush;
    }

    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
    {
    return null;
    }
    }

    <Window.Resources>
    <local:RGBConverter x:Key="rgbConverter"/>
    <Style TargetType="Slider">
    <Setter Property="BorderBrush" Value="Silver"/>
    <Setter Property="BorderThickness" Value="3"/>
    </Style>
    </Window.Resources>
    <Grid >
    <Grid.RowDefinitions>
    <RowDefinition Height="30"/>
    <RowDefinition Height="30"/>
    <RowDefinition Height="30"/>
    <RowDefinition/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
    <ColumnDefinition Width="50"/>
    <ColumnDefinition Width="50"/>
    <ColumnDefinition/>
    </Grid.ColumnDefinitions>
    <Label Grid.Row="0" Grid.Column="0" Content="Red: " HorizontalAlignment="Left" VerticalAlignment="Top"/>
    <Label Grid.Row="1" Grid.Column="0" Content="Green:" HorizontalAlignment="Left" VerticalAlignment="Top"/>
    <Label Grid.Row="2" Grid.Column="0" Content="Blue:" HorizontalAlignment="Left" VerticalAlignment="Top"/>
    <TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding ElementName=slider_R,Path=Value}" VerticalAlignment="Bottom"/>
    <TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding ElementName=slider_G,Path=Value}" VerticalAlignment="Bottom" />
    <TextBlock Grid.Row="2" Grid.Column="1" Text="{Binding ElementName=slider_B,Path=Value}" VerticalAlignment="Bottom"/>
    <Slider x:Name="slider_R" Minimum="0" Maximum="255" IsSnapToTickEnabled="True" Grid.Row="0" Grid.Column="2" HorizontalAlignment="Stretch" />
    <Slider x:Name="slider_G" Minimum="0" Maximum="255" IsSnapToTickEnabled="True" Grid.Row="1" Grid.Column="2" HorizontalAlignment="Stretch" />
    <Slider x:Name="slider_B" Minimum="0" Maximum="255" IsSnapToTickEnabled="True" Grid.Row="2" Grid.Column="2" HorizontalAlignment="Stretch"/>
    <Rectangle Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="3" Stroke="Black">
    <Rectangle.Fill>
    <MultiBinding Converter="{StaticResource ResourceKey=rgbConverter}">
    <Binding ElementName="slider_R" Path="Value"/>
    <Binding ElementName="slider_G" Path="Value"/>
    <Binding ElementName="slider_B" Path="Value"/>
    </MultiBinding>
    </Rectangle.Fill>
    </Rectangle>
    </Grid>

  • 相关阅读:
    gulp使用技巧-删除node_modules文件夹,解决目录层次太深删除报错的问题
    PHP学习-链接数据库
    教程笔记《JavaScript深入浅出》
    读书笔记《高性能网站建设指南》之雅虎军规
    CSS3边框图片-像素虚边的问题
    WebStorm设置手机测试服务器-局域网内其他设备访问
    gulp的安装和使用
    H5canvas赛车游戏-基于lufylegend引擎
    WebStorm设置左侧菜单栏背景色和样式
    基于jquery的-获取短信验证码-倒计时
  • 原文地址:https://www.cnblogs.com/Fred1987/p/6038798.html
Copyright © 2011-2022 走看看