Diagonal Linear Gradient

image_pdfimage_print


   
       

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    x:Class="Microsoft.Samples.Graphics.RectangleExample"
    WindowTitle="Example">
  <Canvas>
  <Rectangle Width="150" Height="100" Margin="5">
    <Rectangle.Fill>
      <LinearGradientBrush >
        <GradientStop Color="Blue" Offset="0"/>
        <GradientStop Color="White" Offset="1" />
      </LinearGradientBrush>
    </Rectangle.Fill>
  </Rectangle>
    <TextBlock Grid.Column="1" VerticalAlignment="Center" Margin="5">Diagonal Linear Gradient</TextBlock>


  </Canvas>
</Page>

   
    
    
    
    
    
    
     


A Partially Transparent Button

image_pdfimage_print


   
       
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    x:Class="Microsoft.Samples.Graphics.RectangleExample"
    WindowTitle="Example">
  <Canvas>
      <Button Background="Purple" FontSize="14" FontWeight="Bold">
        <Button.OpacityMask>
          <LinearGradientBrush StartPoint="0,0" EndPoint="1,0">
            <GradientStop Offset="0" Color="Black"></GradientStop>
            <GradientStop Offset="1" Color="Transparent"></GradientStop>
          </LinearGradientBrush>
        </Button.OpacityMask>
        <Button.Content>A Partially Transparent Button</Button.Content>
      </Button>

  </Canvas>
</Page>

   
    
    
    
    
    
    
     


A Radial Gradient

image_pdfimage_print


   
       
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    x:Class="Microsoft.Samples.Graphics.RectangleExample"
    WindowTitle="Example">
  <Canvas>
      <Ellipse Margin="5"  Stroke="Black" StrokeThickness="1">
        <Ellipse.Fill>
          <RadialGradientBrush
             RadiusX="1" RadiusY="1" >
            <GradientStop Color="White" Offset="0" />
            <GradientStop Color="Blue" Offset="1" />
          </RadialGradientBrush>
        </Ellipse.Fill>
      </Ellipse>
      <TextBlock Grid.Column="1" VerticalAlignment="Center" Margin="5">A Radial Gradient</TextBlock>

  </Canvas>
</Page>

   
    
    
    
    
    
    
     


A Radial Gradient with an Offset Center

image_pdfimage_print


   
       

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    x:Class="Microsoft.Samples.Graphics.RectangleExample"
    WindowTitle="Example">
  <Canvas>
      <Ellipse Margin="5" Grid.Row="1" Stroke="Black" StrokeThickness="1">
        <Ellipse.Fill>
          <RadialGradientBrush
             RadiusX="1" RadiusY="1" GradientOrigin="0.7,0.3"
            >
            <GradientStop Color="White" Offset="0" />
            <GradientStop Color="Blue" Offset="1" />
          </RadialGradientBrush>

        </Ellipse.Fill>
      </Ellipse>
      <TextBlock Grid.Row="1" Grid.Column="1" VerticalAlignment="Center" Margin="5" 
                 TextWrapping="Wrap">A Radial Gradient with an Offset Center</TextBlock>
      

  </Canvas>
</Page>

   
    
    
    
    
    
    
     


GradientStop with Transparent color

image_pdfimage_print


   
       

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      HorizontalAlignment="Center" VerticalAlignment="Center">

<Viewbox>
    <Grid Margin="0,0,5,0" >
      <Ellipse>
        <Ellipse.Fill>
          <RadialGradientBrush Center="0.5,0.1" GradientOrigin="0.5,0.1" RadiusX="0.7" RadiusY="0.5">
            <GradientStop Color="#efff" Offset="0" />
            <GradientStop Color="Transparent" Offset="1" />
          </RadialGradientBrush>
        </Ellipse.Fill>
      </Ellipse>
    </Grid>
</Viewbox>

</Page>

   
    
    
    
    
    
    
     


Simulating lighting effects with linear fills

image_pdfimage_print


   
             

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      HorizontalAlignment="Center" VerticalAlignment="Center">

    <Grid Width="80" Height="26">
        <Grid.RowDefinitions>
            <RowDefinition Height="2*" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>

        <Rectangle Grid.RowSpan="2" RadiusX="13" RadiusY="13">
            <Rectangle.Fill>
                <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
                    <GradientStop Color="Green" Offset="0" />
                    <GradientStop Color="DarkGreen" Offset="0.5" />
                </LinearGradientBrush>
            </Rectangle.Fill>
        </Rectangle>
    </Grid>
</Page>

   
    
    
    
    
    
    
    
    
    
    
    
    
     


Color Converter With String Format

image_pdfimage_print


   
  

<Window x:Class="ColorConverter.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:local="clr-namespace:ColorConverter"
    Title="Colors" Height="400" Width="400">
    <Window.Resources>
        <local:ColorMultiConverter x:Key="colorConverter"/>
        <local:ColorNameValueConverter x:Key="colorNameConverter"/>
    </Window.Resources>
    <Grid>
        <Label Name="label1">Red:</Label>
        <Slider Name="redSlider"/>
        <Label Name="label2">Green:</Label>
        <Slider Name="greenSlider"/>
        <Label Name="label3">Blue:</Label>
        <Slider Name="blueSlider"/>
        <Grid Name="colorBlock">
                <Grid.Background>
                    <SolidColorBrush>
                        <SolidColorBrush.Color>
                            <MultiBinding Converter="{StaticResource colorConverter}">
                                <Binding ElementName="redSlider" Path="Value"/>
                                <Binding ElementName="greenSlider" Path="Value"/>
                                <Binding ElementName="blueSlider" Path="Value"/>
                            </MultiBinding>
                        </SolidColorBrush.Color>
                    </SolidColorBrush>
                </Grid.Background>
                <Label HorizontalContentAlignment="Center" VerticalContentAlignment="Center" VerticalAlignment="Center">
                    <Label.Foreground>
                        <SolidColorBrush>
                            <SolidColorBrush.Color>
                                <MultiBinding Converter="{StaticResource colorConverter}" ConverterParameter="inverse">
                                    <Binding ElementName="redSlider" Path="Value"/>
                                    <Binding ElementName="greenSlider" Path="Value"/>
                                    <Binding ElementName="blueSlider" Path="Value"/>
                                </MultiBinding>
                            </SolidColorBrush.Color>
                        </SolidColorBrush>
                    </Label.Foreground>
                    <TextBlock>
          <TextBlock.Text>
            <MultiBinding StringFormat="Red={0}, Green={1}, Blue={2}">
              <Binding ElementName="redSlider" Path="Value" />
              <Binding ElementName="greenSlider" Path="Value" />
              <Binding ElementName="blueSlider" Path="Value" />
            </MultiBinding>
          </TextBlock.Text>
                    </TextBlock>
                </Label>
        </Grid>
        <TextBox>
            <TextBox.Text>
                <MultiBinding StringFormat=" R{0} G{1} B{2}">
                    <Binding ElementName="redSlider" Path="Value" />
                    <Binding ElementName="greenSlider" Path="Value" />
                    <Binding ElementName="blueSlider" Path="Value" />
                </MultiBinding>
            </TextBox.Text>
        </TextBox>
    </Grid>
</Window>
//File:Window.xaml.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Collections.Generic;
using System.Reflection;
namespace ColorConverter
{
  public partial class Window1 : Window
  {
    public Window1()
    {
      InitializeComponent();
    }

    private void colorBlock_MouseDown(object sender, MouseButtonEventArgs e)
    {
      Random rnd = new Random((int)DateTime.Now.Ticks);

      Color newColor = Color.FromRgb((byte)rnd.Next(255), (byte)rnd.Next(255), (byte)rnd.Next(255));
      colorBlock.Background = new SolidColorBrush(newColor);
    }
  }
  class ColorMultiConverter : IMultiValueConverter
  {

    public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
      bool inverse = (parameter != null) &amp;&amp; (string.Compare(parameter.ToString(), "inverse", true) == 0);

      byte R = System.Convert.ToByte((double)values[0]);
      byte G = System.Convert.ToByte((double)values[1]);
      byte B = System.Convert.ToByte((double)values[2]);

      Color newColor;
      if (inverse)
        newColor = Color.FromRgb((byte)(255 - R), (byte)(255 - G), (byte)(255 - B));
      else
        newColor = Color.FromRgb(R, G, B);

      return newColor;
    }

    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
    {
      Color oldColor = (Color)value;
      double R = (double)oldColor.R;
      double G = (double)oldColor.G;
      double B = (double)oldColor.B;

      return new object[] { R, G, B };
    }

  }
  class ColorNameValueConverter : IValueConverter
  {
    private Dictionary<Color, string> namedColors = new Dictionary<Color, string>();

    public ColorNameValueConverter()
    {
      PropertyInfo[] colorProperties = typeof(Colors).GetProperties(BindingFlags.Static | BindingFlags.Public);
      Color stepColor;
      foreach (PropertyInfo pi in colorProperties)
      {
        if (pi.PropertyType == typeof(Color))
        {
          stepColor = (Color)pi.GetValue(null, null);
          namedColors[stepColor] = pi.Name;
        }
      }

    }


    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
      Color col = (Color)value;

      if(namedColors.ContainsKey(col))
        return namedColors[col];

      return DependencyProperty.UnsetValue;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
      throw new NotImplementedException();
    }

  }
  
}