void DrawFluentSliderTrackBackground(ICanvas canvas, RectangleF dirtyRect)
        {
            canvas.SaveState();

            if (IsEnabled)
            {
                canvas.FillColor = MaximumTrackColor.ToGraphicsColor(Fluent.Color.Primary.ThemeLight);
            }
            else
            {
                canvas.FillColor = ColorHelper.GetGraphicsColor(Fluent.Color.Background.NeutralLighter, Fluent.Color.Background.NeutralDark);
            }

            var x = dirtyRect.X;

            var width  = dirtyRect.Width - TextSize;
            var height = 4;

            var y = (float)((HeightRequest - height) / 2);

            canvas.FillRoundedRectangle(x, y, width, height, 0);

            canvas.RestoreState();

            _trackRect = new RectangleF(x, y, width, height);
        }
示例#2
0
        public override void DrawBar(CGRect aRect, bool flipped)
        {
            // Mimick the dimensions of the original slider
            var originalHeight = aRect.Height;

            aRect.Height = 2.7f;
            var radius = aRect.Height / 2;

            aRect.Y += (originalHeight - aRect.Height) / 2;

            // Calc the progress percentage to know where one bar starts
            var progress = (float)((DoubleValue - MinValue) / (MaxValue - MinValue));

            var minTrackRect = aRect;

            minTrackRect.Width *= progress;

            var maxTrackRect = aRect;

            maxTrackRect.X    += maxTrackRect.Width * progress;
            maxTrackRect.Width = maxTrackRect.Width * (1 - progress);

            // Draw min track
            var minTrackPath = NSBezierPath.FromRoundedRect(minTrackRect, radius, radius);

            var defaultMinTrackColor = Color.Accent.ToNSColor();

            if (Forms.IsMojaveOrNewer)
            {
                defaultMinTrackColor = NSColor.ControlAccentColor;
            }

            var minTrackColor = MinimumTrackColor.IsDefault ? defaultMinTrackColor : MinimumTrackColor.ToNSColor();

            minTrackColor.SetFill();
            minTrackPath.Fill();

            var defaultMaxTrackColor = NSColor.ControlShadow;

            if (Forms.IsMojaveOrNewer)
            {
                defaultMaxTrackColor = NSColor.SeparatorColor;
            }

            // Draw max track
            var maxTrackPath  = NSBezierPath.FromRoundedRect(maxTrackRect, radius, radius);
            var maxTrackColor = MaximumTrackColor.IsDefault ? defaultMaxTrackColor : MaximumTrackColor.ToNSColor();

            maxTrackColor.SetFill();
            maxTrackPath.Fill();
        }
示例#3
0
        void DrawCupertinoSliderTrackBackground(ICanvas canvas, RectangleF dirtyRect)
        {
            canvas.SaveState();

            canvas.FillColor = MaximumTrackColor.ToGraphicsColor(DefaultCupertinoSliderTrackBackgroundColor);

            var x = dirtyRect.X;

            var width  = dirtyRect.Width;
            var height = 1;

            var y = (float)((HeightRequest - height) / 2);

            canvas.FillRoundedRectangle(x, y, width, height, 20);

            canvas.RestoreState();

            _trackRect = new RectangleF(x, y, width, height);
        }
示例#4
0
        void DrawMaterialSliderTrackBackground(ICanvas canvas, RectangleF dirtyRect)
        {
            canvas.SaveState();

            canvas.FillColor = MaximumTrackColor.ToGraphicsColor(Material.Color.LightBlue);

            var x = dirtyRect.X;

            var width  = dirtyRect.Width;
            var height = 2;

            var y = (float)((HeightRequest - height) / 2);

            canvas.FillRoundedRectangle(x, y, width, height, 0);

            canvas.RestoreState();

            _trackRect = new RectangleF(x, y, width, height);
        }