#region Imports using DPumpHydr.WinFrmUI.RLT.Util; using System.Drawing; using System.Drawing.Drawing2D; using System.Windows.Forms; #endregion namespace DPumpHydr.WinFrmUI.RLT.Controls { #region RibbonGroupBox public class RibbonGroupBox : ContainerControl { private SmoothingMode _SmoothingType = SmoothingMode.HighQuality; public SmoothingMode SmoothingType { get => _SmoothingType; set { _SmoothingType = value; Invalidate(); } } private CompositingQuality _CompositingQualityType = CompositingQuality.HighQuality; public CompositingQuality CompositingQualityType { get => _CompositingQualityType; set { _CompositingQualityType = value; Invalidate(); } } private Color _BaseColor = Color.Transparent; public Color BaseColor { get => _BaseColor; set { _BaseColor = value; Invalidate(); } } private Color _LineColorA = Color.FromArgb(126, 126, 126); public Color LineColorA { get => _LineColorA; set { _LineColorA = value; Invalidate(); } } private Color _LineColorB = Color.FromArgb(126, 126, 126); public Color LineColorB { get => _LineColorB; set { _LineColorB = value; Invalidate(); } } private Color _BorderColorA = Color.FromArgb(143, 143, 143); public Color BorderColorA { get => _BorderColorA; set { _BorderColorA = value; Invalidate(); } } private Color _BorderColorB = Color.FromArgb(174, 178, 172); public Color BorderColorB { get => _BorderColorB; set { _BorderColorB = value; Invalidate(); } } private Color _BorderColorC = Color.FromArgb(194, 192, 200); public Color BorderColorC { get => _BorderColorC; set { _BorderColorC = value; Invalidate(); } } public RibbonGroupBox() { SetStyle(ControlStyles.UserPaint | ControlStyles.SupportsTransparentBackColor, true); BackColor = Color.Transparent; DoubleBuffered = true; ForeColor = Color.Black; Font = new("Tahoma", 10, FontStyle.Bold); Size = new(170, 90); } public int _titleHeight = 30; public int TitleHeight { get => _titleHeight; set { _titleHeight = value; } } protected override void OnPaint(PaintEventArgs e) { Bitmap B = new(Width, Height); Graphics G = Graphics.FromImage(B); Rectangle Body = new(0, 0, Width - 1, Height - 1); base.OnPaint(e); G.Clear(BaseColor); G.SmoothingMode = SmoothingType; G.CompositingQuality = CompositingQualityType; ImageToCodeClassRibbon ICT = new(); Image GROUPHATCH = ICT.CodeToImage("/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAIBAQIBAQICAgICAgICAwUDAwMDAwYEBAMFBwYHBwcGBwcICQsJCAgKCAcHCg0KCgsMDAwMBwkODw0MDgsMDAz/2wBDAQICAgMDAwYDAwYMCAcIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCAAcABwDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9OYVDLHsRNyYPTvgc/oO9NtljUO2FZQ2OmQPwz9PToOKfFGxKkyuVIzy3U8fXI4+nJpkEOQ6mWUlWOdx+h5656fqeKV+40hViC3AUIpKoQBnkenGR7du3XipF2R8BAQenJHGPaoo0xOql5AxUHGcBuR7+3XHc1LAGt02qGkA7nII9ulDb3JknsMhjkdUIKMCvygZwMgZ5+mf0ptuXlLAGMksSxyTzkdBz7/TipbRitojA8kA+v+elNtJT++YAApNtHfjAob6FJX1GozxTAERgkddxyPXgn0J7elOSd1HzFQT0xuNP4WUgZ4iLdT6mpEiUqGIJLc0k0Ckrn//Z"); TextureBrush GROUPIMAGE = new(GROUPHATCH, WrapMode.TileFlipXY); G.FillRectangle(GROUPIMAGE, Body); Pen p = new(new SolidBrush(BorderColorA)); G.DrawRectangle(p, Body); Pen p1 = new(new SolidBrush(BorderColorB)); G.DrawRectangle(p1, 1, 1, Width - 3, Height - 3); Pen p2 = new(new SolidBrush(BorderColorC)); G.DrawRectangle(p2, 2, 2, Width - 5, Height - 5); //G.DrawString(Text, t, New SolidBrush(Color.FromArgb(50, 50, 50)), New Rectangle(-1, 1, Width - 1, 25), New StringFormat() With {.Alignment = StringAlignment.Center, .LineAlignment = StringAlignment.Center}) G.DrawString(Text, Font, new SolidBrush(ForeColor), new Rectangle(0, 4, Width - 1, 4+24), new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center }); Pen UnderlinePen = new(new SolidBrush(LineColorA), 3); G.DrawLine(UnderlinePen, 20, _titleHeight, Width - 20, _titleHeight); Pen UnderlinePen2 = new(new SolidBrush(LineColorB), 1); G.DrawLine(UnderlinePen2, 20, _titleHeight+3, Width - 20, _titleHeight+3); e.Graphics.DrawImage(B, 0, 0); G.Dispose(); B.Dispose(); } } #endregion }