#region Imports using DPumpHydr.WinFrmUI.RLT.Util; using System; using System.Diagnostics; using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Text; using System.Runtime.CompilerServices; using System.Windows.Forms; #endregion namespace DPumpHydr.WinFrmUI.RLT.Controls { #region AloneProgressBar public class AloneProgressBar : Control { private int _Val; private int _Min; private int _Max; [DebuggerBrowsable(DebuggerBrowsableState.Never), CompilerGenerated] private readonly Color _Stripes; [DebuggerBrowsable(DebuggerBrowsableState.Never), CompilerGenerated] private readonly Color _BackgroundColor; public Color Stripes { get; set; } public Color BackgroundColor { get; set; } public int Value { get => _Val; set { _Val = value; Invalidate(); } } public int Minimum { get => _Min; set { _Min = value; Invalidate(); } } public int Maximum { get => _Max; set { _Max = value; Invalidate(); } } public Color BorderColor { get; set; } = Color.DodgerBlue; public Color BaseColor { get; set; } = Color.FromArgb(45, 45, 48); public AloneProgressBar() { SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer | ControlStyles.ResizeRedraw | ControlStyles.SupportsTransparentBackColor | ControlStyles.UserPaint, true); _Val = 50; _Min = 0; _Max = 100; Stripes = Color.DarkGreen; BackgroundColor = Color.Green; DoubleBuffered = true; Maximum = 100; Minimum = 0; Value = 50; BackColor = Color.Transparent; } protected override void OnPaint(PaintEventArgs e) { Graphics graphics = e.Graphics; graphics.SmoothingMode = SmoothingMode.HighQuality; graphics.TextRenderingHint = TextRenderingHint.ClearTypeGridFit; base.OnPaint(e); //graphics.Clear(BackColor); using (Pen pen = new(BorderColor)) { graphics.DrawPath(pen, AloneLibrary.RoundRect(AloneLibrary.FullRectangle(base.Size, true), 6, AloneLibrary.RoundingStyle.All)); } using (SolidBrush solidBrush = new(BaseColor)) { graphics.FillPath(solidBrush, AloneLibrary.RoundRect(AloneLibrary.FullRectangle(base.Size, true), 6, AloneLibrary.RoundingStyle.All)); } bool flag = Value != 0; if (flag) { using HatchBrush hatchBrush = new(HatchStyle.LightUpwardDiagonal, Stripes, BackgroundColor); graphics.FillPath(hatchBrush, AloneLibrary.RoundRect(checked(new Rectangle(0, 0, (int)Math.Round(unchecked((Value / (double)Maximum * Width) - 1.0)), base.Height - 1)), 6, AloneLibrary.RoundingStyle.All)); } } } #endregion }