private void InitBrush()
        {
            if (_lbrsv == null)
            {
                _lbrsv = new LinearGradientBrush
                             (new Point(0, 0), new Point(1, 0), Color.Black, Color.White);
                float   dy = 0f, incy = 360f / (float)(num - 1);
                float[] pos = new float[num];
                Color[] col = new Color[num];
                HSL     hue = new HSL(0, 50, 100);
                for (int i = 0; i < num; i++, dy += incy)
                {
                    hue.h  = (int)dy;
                    pos[i] = dy / 360f;
                    col[i] = HSL.Hue2RGB(hue);
                }
                ColorBlend ret = new ColorBlend();
                //pos[pos.Length-1]=1f;
                ret.Colors    = col;
                ret.Positions = pos;
                _lbrsv.InterpolationColors = ret;
            }
            if (_lbrsh == null)
            {
                _lbrsh = new LinearGradientBrush
                             (new Point(0, 0), new Point(1, 0), Color.Black, Color.White);
                ColorBlend ret = new ColorBlend();
                ret.Positions = new float[] { 0f, 0.5f, 1f };
                ret.Colors    = new Color[] { Color.White, Color.FromArgb(0, 128, 128, 128), Color.Black };
                _lbrsh.InterpolationColors = ret;
            }
            float w = Math.Max(this.Width, 3),
                  h = Math.Max(this.Height, 3);

            _lbrsv.Transform = new Matrix(0f, h, w, 0f, 0f, 0f);
            _lbrsh.Transform = new Matrix(w, 0f, 0f, h, 0f, 0f);
            _transfrm        = new Matrix(w - 1f, 0f, 0f, h - 1f, 0f, 0f);
        }
        private void InitBrush()
        {
            if (_pthbrs == null)
            {
                double   num2 = (double)num;
                PointF[] pts  = new PointF[num];
                Color[]  cols = new Color[num];
                for (int i = 0; i < num; i++)
                {
                    cols[i] = HSL.Hue2RGB(new HSL((int)((double)i * (360 / num2)), 50, 100));
                    pts[i]  = new PointF((float)Math.Sin((double)i * (2.0 / num2) * Math.PI),
                                         (float)Math.Cos((double)i * (2.0 / num2) * Math.PI));
                }
                _pthbrs = new PathGradientBrush(pts);
                _pthbrs.SurroundColors = cols;
                _pthbrs.FocusScales    = new PointF(0f, 0f);
                _pthbrs.CenterColor    = Color.White;
            }
            float w = Math.Max(this.Width / 2, 3), h = Math.Max(this.Height / 2, 3);

            _pthbrs.Transform = new Matrix(w, 0f, 0f, h, w, h);
            _transfrm         = new Matrix(w - 2f, 0f, 0f, h - 2f, w, h);
        }
 private Color FindPoint2(PointF val)
 {
     return(HSL.Hue2RGB(FindPoint(val)));
 }