123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212 |
- //using System;
- //using System.Drawing;
- //using System.Drawing.Drawing2D;
- //using System.Runtime.InteropServices;
- //using System.Windows.Forms;
- //namespace Optimizer
- //{
- // public sealed class MoonComboBox : ComboBox
- // {
- // [DllImport("user32.dll")]
- // static extern IntPtr GetDC(IntPtr ptr);
- // [DllImport("gdi32.dll")]
- // static extern int GetDeviceCaps(IntPtr hdc, int nIndex);
- // [DllImport("user32.dll", EntryPoint = "ReleaseDC")]
- // static extern IntPtr ReleaseDC(IntPtr hWnd, IntPtr hDc);
- // private Color _color = Color.FromArgb(40, 40, 40);
- // private Color _selectedItemColor = Color.FromArgb(40, 40, 40);
- // private Color _borderColor = Color.FromArgb(61, 61, 61);
- // private Color _separatorLineColor = Color.FromArgb(61, 61, 61);
- // public Color SelectColor
- // {
- // get => _selectedItemColor;
- // set
- // {
- // _selectedItemColor = value;
- // Invalidate();
- // }
- // }
- // protected override void OnDrawItem(DrawItemEventArgs e)
- // {
- // base.OnDrawItem(e);
- // LinearGradientBrush LGB = new LinearGradientBrush(e.Bounds, _selectedItemColor, ColorHelper.ChangeColorBrightness(_selectedItemColor, 0.7), 90.0F);
- // if (Convert.ToInt32(e.State & DrawItemState.Selected) == (int)DrawItemState.Selected)
- // {
- // if (!(e.Index == -1))
- // {
- // e.Graphics.FillRectangle(LGB, e.Bounds);
- // e.Graphics.DrawString(GetItemText(Items[e.Index]), e.Font, new SolidBrush(GetContrastColor(SelectColor)), e.Bounds);
- // }
- // }
- // else
- // {
- // if (!(e.Index == -1))
- // {
- // e.Graphics.FillRectangle(new SolidBrush(Color.FromArgb(40, 40, 40)), e.Bounds);
- // e.Graphics.DrawString(GetItemText(Items[e.Index]), e.Font, Brushes.DimGray, e.Bounds);
- // }
- // }
- // LGB.Dispose();
- // }
- // protected override void OnLostFocus(EventArgs e)
- // {
- // base.OnLostFocus(e);
- // SuspendLayout();
- // Update();
- // ResumeLayout();
- // }
- // protected override void OnPaintBackground(PaintEventArgs e)
- // {
- // base.OnPaintBackground(e);
- // }
- // protected override void OnResize(EventArgs e)
- // {
- // base.OnResize(e);
- // if (!Focused)
- // {
- // SelectionLength = 0;
- // }
- // }
- // private static int DPIScale
- // {
- // get
- // {
- // IntPtr hdc = GetDC(IntPtr.Zero);
- // int DC = GetDeviceCaps(hdc, 0x58);
- // ReleaseDC(IntPtr.Zero, hdc);
- // return DC;
- // }
- // }
- // private int GetDPIScaleFactor(int currentDPI)
- // {
- // switch (currentDPI)
- // {
- // case 96:
- // return 25;
- // case 120:
- // return 30;
- // case 144:
- // return 35;
- // case 192:
- // return 40;
- // default:
- // return 25;
- // }
- // }
- // protected override void OnDropDown(EventArgs e)
- // {
- // base.OnDropDown(e);
- // DropDownHeight = Items.Count * GetDPIScaleFactor(DPIScale);
- // }
- // public MoonComboBox()
- // {
- // SetStyle((ControlStyles)0x22016, true);
- // SetStyle(ControlStyles.Selectable, false);
- // DrawMode = DrawMode.OwnerDrawFixed;
- // DropDownStyle = ComboBoxStyle.DropDownList;
- // BackColor = Color.FromArgb(246, 246, 246);
- // ForeColor = Color.FromArgb(76, 76, 97);
- // Size = new Size(135, 27);
- // Cursor = Cursors.Hand;
- // }
- // private GraphicsPath GetFigurePath(Rectangle rect, int radius)
- // {
- // GraphicsPath path = new GraphicsPath();
- // float curveSize = radius * 2F;
- // path.StartFigure();
- // path.AddArc(rect.X, rect.Y, curveSize, curveSize, 180, 90);
- // path.AddArc(rect.Right - curveSize, rect.Y, curveSize, curveSize, 270, 90);
- // path.AddArc(rect.Right - curveSize, rect.Bottom - curveSize, curveSize, curveSize, 0, 90);
- // path.AddArc(rect.X, rect.Bottom - curveSize, curveSize, curveSize, 90, 90);
- // path.CloseFigure();
- // return path;
- // }
- // private Color GetContrastColor(Color c)
- // {
- // double brightness = c.R * 0.299 + c.G * 0.587 + c.B * 0.114;
- // return brightness > 149 ? Color.Black : Color.White;
- // }
- // public enum Direction
- // {
- // Up, Down
- // }
- // private void DrawTriangle(Graphics g, Rectangle rect, Direction direction)
- // {
- // int halfWidth = rect.Width / 2;
- // Point p0 = Point.Empty;
- // Point p1 = Point.Empty;
- // Point p2 = Point.Empty;
- // switch (direction)
- // {
- // case Direction.Up:
- // p0 = new Point(rect.Left + halfWidth, rect.Top);
- // p1 = new Point(rect.Left, rect.Bottom);
- // p2 = new Point(rect.Right, rect.Bottom);
- // break;
- // case Direction.Down:
- // p0 = new Point(rect.Left + halfWidth, rect.Bottom);
- // p1 = new Point(rect.Left, rect.Top);
- // p2 = new Point(rect.Right, rect.Top);
- // break;
- // }
- // g.FillPolygon(Brushes.DarkGray, new Point[] { p0, p1, p2 });
- // }
- // protected override void OnPaint(PaintEventArgs e)
- // {
- // base.OnPaint(e);
- // e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
- // e.Graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
- // e.Graphics.InterpolationMode = InterpolationMode.High;
- // e.Graphics.Clear(Parent.BackColor);
- // var rect = new Rectangle(0, 0, Width - 1, Height - 1);
- // GraphicsPath GP = GetFigurePath(rect, 5);
- // LinearGradientBrush LGB = new LinearGradientBrush(ClientRectangle, _color, ColorHelper.ChangeColorBrightness(_color, 0.8), 90.0F);
- // e.Graphics.SetClip(GP);
- // e.Graphics.FillRectangle(LGB, ClientRectangle);
- // e.Graphics.ResetClip();
- // e.Graphics.DrawPath(new Pen(_borderColor), GP);
- // e.Graphics.DrawString(Text, Font, new SolidBrush(ForeColor), new Rectangle(3, 0, Width - 20, Height), new StringFormat
- // {
- // LineAlignment = StringAlignment.Center,
- // Alignment = StringAlignment.Near
- // });
- // DrawTriangle(e.Graphics, new Rectangle(Width - 17, (Height / 2) - 4, 8, 8), DroppedDown ? Direction.Up : Direction.Down);
- // e.Graphics.DrawLine(new Pen(ColorHelper.ChangeColorBrightness(_separatorLineColor, 0.8)), Width - 24, 5, Width - 24, Height - 6);
- // e.Graphics.DrawLine(new Pen(_separatorLineColor), Width - 25, 5, Width - 25, Height - 6);
- // }
- // }
- //}
|