void DrawFluentSliderTrackProgress(ICanvas canvas, RectangleF dirtyRect) { canvas.SaveState(); if (IsEnabled) { canvas.FillColor = MinimumTrackColor.ToGraphicsColor(Fluent.Color.Primary.ThemePrimary); } else { canvas.FillColor = ColorHelper.GetGraphicsColor(Fluent.Color.Background.NeutralTertiaryAlt, Fluent.Color.Background.NeutralQuaternaryAlt); } var x = dirtyRect.X; var value = ((double)Value).Clamp(0, 1); var width = (float)((dirtyRect.Width - TextSize) * value); var height = 4; var y = (float)((HeightRequest - height) / 2); canvas.FillRoundedRectangle(x, y, width, height, 0); canvas.RestoreState(); }
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(); }
void DrawCupertinoSliderTrackProgress(ICanvas canvas, RectangleF dirtyRect) { canvas.SaveState(); canvas.FillColor = MinimumTrackColor.ToGraphicsColor(DefaultCupertinoSliderTrackProgressColor); var x = dirtyRect.X; var value = ((double)Value).Clamp(0, 1); var width = (float)(dirtyRect.Width * value); var height = 1; var y = (float)((HeightRequest - height) / 2); canvas.FillRoundedRectangle(x, y, width, height, 20); canvas.RestoreState(); }
protected virtual void DrawMaterialSliderTrackProgress(ICanvas canvas, RectangleF dirtyRect) { canvas.SaveState(); canvas.FillColor = MinimumTrackColor.ToGraphicsColor(Material.Color.Blue); var x = dirtyRect.X; var value = ((double)Value).Clamp(0, 1); var width = (float)(dirtyRect.Width * value); var height = 2; var y = (float)((HeightRequest - height) / 2); canvas.FillRoundedRectangle(x, y, width, height, 0); canvas.RestoreState(); }