コード例 #1
0
        public void SetShape(IVisualElementRenderer renderer, IBackgroundShape newShape)
        {
            _renderer = renderer;

            if (_shape != newShape)
            {
                if (_shape != null)
                {
                    _shape.ShapeInvalidateRequested -= OnShapeInvalidateRequested;
                }

                if (newShape != null)
                {
                    newShape.ShapeInvalidateRequested += OnShapeInvalidateRequested;
                }

                _shape = newShape;

                _pathProvider?.Dispose();
                _pathProvider = PathProvidersContainer.Resolve(_shape.GetType());

                if (_pathProvider != null)
                {
                    _pathProvider.SetShape(newShape);
                    _renderer?.NativeView?.FindLayerOfType <GradientStrokeLayer>()?.SetPathProvider(_pathProvider);
                }
            }

            Invalidate();
        }
コード例 #2
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);
        }