예제 #1
0
        protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                if (_pathProvider != null)
                {
                    _pathProvider.Dispose();
                    _pathProvider = null;
                }

                _shadowLayer.RemoveFromSuperLayer();
                _shadowLayer.Dispose();
                _shadowLayer = null;

                if (_gradientProvider != null)
                {
                    _gradientProvider.Dispose();
                    _gradientProvider = null;
                }

                if (_strokeGradientProvider != null)
                {
                    _strokeGradientProvider.Dispose();
                    _strokeGradientProvider = null;
                }
            }

            base.Dispose(disposing);
        }
예제 #2
0
        public void SetGradient(GradientBrush gradientBrush)
        {
            _dirty = true;

            _gradientProvider?.Dispose();
            _gradientProvider = GradientProvidersContainer.Resolve(
                gradientBrush.GetType());
            _gradientProvider?.SetGradient(gradientBrush);

            SetNeedsDisplay();
        }
예제 #3
0
        public void SetGradient(GradientBrush gradientBrush)
        {
            _dirty = true;

            _gradientProvider?.Dispose();
            _gradientProvider = GradientProvidersContainer.Resolve(
                gradientBrush.GetType());
            _gradientProvider?.SetGradient(gradientBrush);

            InvalidateSelf();
        }
예제 #4
0
        public void SetBorder(double strokeWidth, Color strokeColor, GradientBrush gradientBrush)
        {
            _dirty       = true;
            _strokeWidth = (float)strokeWidth;
            _strokeColor = strokeColor.ToUIColor();

            _strokeGradientProvider?.Dispose();
            _strokeGradientProvider = GradientProvidersContainer.Resolve(
                gradientBrush.GetType());
            _strokeGradientProvider?.SetGradient(gradientBrush);

            SetNeedsDisplay();
        }
예제 #5
0
        public void SetBorderGradient(GradientBrush gradientBrush)
        {
            _dirty = true;

            _strokeGradientProvider?.Dispose();
            _strokeGradientProvider = GradientProvidersContainer.Resolve(
                gradientBrush.GetType());
            _strokeGradientProvider?.SetGradient(gradientBrush);

            InvalidateSelf();

            if (_strokeGradientProvider == null || !_strokeGradientProvider.HasGradient)
            {
                return;
            }

            _strokePaint.Color = Color.White.ToAndroid();
        }
예제 #6
0
        protected override void Dispose(bool disposing)
        {
            if (_disposed)
            {
                return;
            }

            _disposed = true;

            if (disposing)
            {
                if (_clipPath != null)
                {
                    _clipPath.Dispose();
                    _clipPath = null;
                }

                if (_strokePathEffect != null)
                {
                    _strokePathEffect.Dispose();
                    _strokePathEffect = null;
                }

                if (_gradientProvider != null)
                {
                    _gradientProvider.Dispose();
                    _gradientProvider = null;
                }

                if (_strokeGradientProvider != null)
                {
                    _strokeGradientProvider.Dispose();
                    _strokeGradientProvider = null;
                }

                _pathProvider = null;
            }

            DisposeBorder(disposing);

            base.Dispose(disposing);
        }