| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 | using System;using System.Collections.Generic;using System.Globalization;using System.Linq;using System.Text;using System.Windows;using System.Windows.Controls;using System.Windows.Data;using System.Windows.Media;using System.Windows.Shapes;using Brushes = System.Windows.Media.Brushes;namespace Aitex.Core.UI.Converters{    class CenterBorderGapMaskConverter : IMultiValueConverter    {        // Methods        public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)        {            Type type = typeof(double);            if (values == null                || values.Length != 3                || values[0] == null                || values[1] == null                || values[2] == null                || !type.IsAssignableFrom(values[0].GetType())                || !type.IsAssignableFrom(values[1].GetType())                || !type.IsAssignableFrom(values[2].GetType()))            {                return DependencyProperty.UnsetValue;            }            double pixels = (double)values[0];            double width = (double)values[1];            double height = (double)values[2];            if ((width == 0.0) || (height == 0.0))            {                return null;            }            Grid visual = new Grid();            visual.Width = width;            visual.Height = height;            ColumnDefinition colDefinition1 = new ColumnDefinition();            ColumnDefinition colDefinition2 = new ColumnDefinition();            ColumnDefinition colDefinition3 = new ColumnDefinition();            colDefinition1.Width = new GridLength(1.0, GridUnitType.Star);            colDefinition2.Width = new GridLength(pixels);            colDefinition3.Width = new GridLength(1.0, GridUnitType.Star);            visual.ColumnDefinitions.Add(colDefinition1);            visual.ColumnDefinitions.Add(colDefinition2);            visual.ColumnDefinitions.Add(colDefinition3);            RowDefinition rowDefinition1 = new RowDefinition();            RowDefinition rowDefinition2 = new RowDefinition();            rowDefinition1.Height = new GridLength(height / 2.0);            rowDefinition2.Height = new GridLength(1.0, GridUnitType.Star);            visual.RowDefinitions.Add(rowDefinition1);            visual.RowDefinitions.Add(rowDefinition2);            Rectangle rectangle1 = new Rectangle();            Rectangle rectangle2 = new Rectangle();            Rectangle rectangle3 = new Rectangle();            rectangle1.Fill = Brushes.Black;            rectangle2.Fill = Brushes.Black;            rectangle3.Fill = Brushes.Black;            Grid.SetRowSpan(rectangle1, 2);            Grid.SetRow(rectangle1, 0);            Grid.SetColumn(rectangle1, 0);            Grid.SetRow(rectangle2, 1);            Grid.SetColumn(rectangle2, 1);            Grid.SetRowSpan(rectangle3, 2);            Grid.SetRow(rectangle3, 0);            Grid.SetColumn(rectangle3, 2);            visual.Children.Add(rectangle1);            visual.Children.Add(rectangle2);            visual.Children.Add(rectangle3);            return new VisualBrush(visual);        }        public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)        {            return new object[] { Binding.DoNothing };        }    }}
 |