• 剪切具有CornerRadius的RectangleGeometry(可能在Ripple中用到)


    剪切具有CornerRadius的RectangleGeometry(可能在Ripple中用到)

    1、新建Converter

    public class BorderClipConverter : IMultiValueConverter
    {
        public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
        {
            if (values.Length == 3 && values[0] is double && values[1] is double && values[2] is CornerRadius)
            {
                var width = (double)values[0];
                var height = (double)values[1];
    
                if (width < Double.Epsilon || height < Double.Epsilon)
                {
                    return Geometry.Empty;
                }
    
                var radius = (CornerRadius)values[2];
    
                 var clip = new System.Windows.Media.RectangleGeometry(new Rect(0, 0, width, height), radius.TopLeft, radius.TopLeft);
                clip.Freeze();
    
                return clip;
            }
    
            return DependencyProperty.UnsetValue;
        }
    
        public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
        {
            throw new NotSupportedException();
        }
    } 

    2、添加Converter

    <controls:Ripple.Clip>
                                    <MultiBinding Converter="{StaticResource BorderClipConverter}">
                                        <Binding Path="ActualWidth" ElementName="border" />
                                        <Binding Path="ActualHeight" ElementName="border" />
                                        <Binding Path="CornerRadius" ElementName="border" />
                                    </MultiBinding>
                                </controls:Ripple.Clip>
     
  • 相关阅读:
    单循环判断数组中是否有存在重复值
    【Moss2010系列】利用BCS进行业务数据集成(1)
    状态压缩
    矩阵快速幂
    高精度加法
    旋转treap
    bitset
    快速幂
    splay
    考试注意
  • 原文地址:https://www.cnblogs.com/akiing/p/7493358.html
Copyright © 2020-2023  润新知