示例#1
0
        /// <summary>
        /// Register a <see cref="ID2D1EffectImpl"/>.
        /// </summary>
        /// <typeparam name="T">Type of </typeparam>
        /// <param name="effectId"></param>
        public void RegisterEffect <T>(Guid effectId) where T : ID2D1EffectImpl, new()
        {
            lock (_customEffectFactories)
            {
                if (_customEffectFactories.ContainsKey(effectId))
                {
                    return;
                }

                var factory = new CustomEffectFactory(typeof(T), () => new T());
                _customEffectFactories.Add(effectId, factory);
                RegisterEffectFromString(effectId, factory.GetXML(), factory.GetBindings(), factory.Callback);
            }
        }
示例#2
0
        /// <summary>
        /// Register a <see cref="ID2D1EffectImpl"/> factory.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="effectFactory"></param>
        /// <param name="effectId"></param>
        public void RegisterEffect <T>(Func <T> effectFactory, Guid effectId) where T : ID2D1EffectImpl
        {
            CustomEffectFactory factory;

            lock (_customEffectFactories)
            {
                if (_customEffectFactories.ContainsKey(effectId))
                {
                    throw new ArgumentException("An effect is already registered with this GUID", nameof(effectFactory));
                }

                factory = new CustomEffectFactory(typeof(T), () => effectFactory());
                _customEffectFactories.Add(effectId, factory);
            }
            RegisterEffectFromString(effectId, factory.GetXML(), factory.GetBindings(), factory.Callback);
        }