Source/AdvTree/Drawing/ColorStopConverter.cs

(完整代码) 1KB

using System;
using System.ComponentModel;
using System.ComponentModel.Design.Serialization;
using System.Globalization;
using System.Reflection;
using System.Drawing;

namespace DevComponents.WinForms.Drawing
{
    /// <summary>
    /// Represents BackgroundColorBlend object converter.
    /// </summary>
    public class ColorStopConverter : TypeConverter
    {
        public ColorStopConverter() { }

        public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
        {
            if (destinationType == typeof(InstanceDescriptor))
                return true;
            return base.CanConvertTo(context, destinationType);
        }

        public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
        {
            if (destinationType == null)
                throw new ArgumentNullException("destinationType");

            if ((destinationType == typeof(InstanceDescriptor)) && (value is ColorStop))
            {
                ColorStop doc = (ColorStop)value;
                Type[] constructorParams = null;
                MemberInfo constructorMemberInfo = null;
                object[] constructorValues = null;

                constructorParams = new Type[2] { typeof(Color), typeof(float) };
                constructorMemberInfo = typeof(ColorStop).GetConstructor(constructorParams);
                constructorValues = new object[2] { doc.Color, doc.Position };

                if (constructorMemberInfo != null)
                {
                    return new InstanceDescriptor(constructorMemberInfo, constructorValues);
                }
            }

            return base.ConvertTo(context, culture, value, destinationType);
        }
    }
}

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

还没有人解读过这个文件。