/// <summary>
        /// Handles the Paint event of the panel control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="PaintEventArgs"/> instance containing the event data.</param>
        private void panel_Paint(object sender, PaintEventArgs e)
        {
            if (minColumnWidth == 0 || rowHeight == 0)
            {
                return;
            }

            AllocTitleBrush();

            // Paint each column
            for (int c = 0; c < columnCount; c++)
            {
                // Find starting row in this column
                int  gi        = 0;
                int  ci        = -1;
                bool blankLine = false;

                for (int r = 0; r < vScrollBar.Value; r++)
                {
                    NextRow(c, ref gi, ref ci, ref blankLine);
                }

                // Paint each visible row
                for (int r = 0; r < fullRowsDisplayed + partialRowsDisplayed; r++)
                {
                    Rectangle rect = new Rectangle(columnX[c],
                                                   rowHeight * r,
                                                   columnWidth[c],
                                                   rowHeight);

                    if (blankLine)
                    {
                        //e.Graphics.FillRectangle(SystemBrushes.Window, rect);
                        e.Graphics.FillRectangle(new SolidBrush(Color.FromArgb(22, 22, 22)), rect);

                        continue;
                    }

                    ColorGroup g = colorGroups[c][gi];

                    if (ci == -1)
                    {
                        //e.Graphics.FillRectangle(SystemBrushes.Window, rect);
                        e.Graphics.FillRectangle(new SolidBrush(Color.FromArgb(22, 22, 22)), rect);

                        e.Graphics.DrawString(g.Title, titleFont, titleBrush, rect, StringFormat.GenericDefault);
                    }
                    else
                    {
                        Color color = g.Colors[ci];
                        bool  sel   = (selGroup == g) && (selIndex == ci);

                        // Background color
                        //e.Graphics.FillRectangle(sel ? SystemBrushes.Highlight : SystemBrushes.Window, rect);
                        e.Graphics.FillRectangle(sel ? new SolidBrush(Color.FromArgb(100, 100, 100)) : new SolidBrush(Color.FromArgb(22, 22, 22)), rect);


                        // Draw color box
                        Brush     colorBrush = new SolidBrush(color);
                        Rectangle colorRect  = new Rectangle(rect.X + colorBoxOffset,
                                                             rect.Y + colorBoxOffset,
                                                             colorBoxWidth,
                                                             rect.Height - 2 * colorBoxOffset);
                        e.Graphics.FillRectangle(colorBrush, colorRect);
                        e.Graphics.DrawRectangle(SystemPens.WindowText, colorRect);
                        colorBrush.Dispose();

                        // Text
                        Rectangle textRect = new Rectangle(rect.X + colorTextOffset,
                                                           rect.Y,
                                                           rect.Width - colorTextOffset,
                                                           rect.Height);
                        e.Graphics.DrawString(" " + color.Name, colorFont,
                                              sel ? System.Drawing.Brushes.Gray : SystemBrushes.Highlight,
                                              textRect, StringFormat.GenericDefault);
                    }

                    NextRow(c, ref gi, ref ci, ref blankLine);
                }
            }
        }
        /// <summary>
        /// Organizes the color groups depending on the number of columns being displayed.
        /// </summary>
        /// <param name="groups">Array of array of color groups.</param>
        /// <remarks>REALLY need an example!</remarks>
        public override void SplitColorGroups(ColorGroup[][] groups)
        {
            groups[0] = new ColorGroup[1];

            AddColorGroup(systemColors);
        }
        /// <summary>
        /// Changes the sel key.
        /// </summary>
        /// <param name="key">The key.</param>
        private void ChangeSelKey(Keys key)
        {
            int  column    = -1;
            int  row       = -1;
            int  gi        = -1;
            int  ci        = -1;
            bool blankLine = false;

            if (!GetSelColorLocation(ref column, ref row, ref gi, ref ci))
            {
                column = 0;
                gi     = 0;
                ci     = 0;
            }
            else if (key == Keys.Up)
            {
                if (ci > 0 || gi > 0)                 // go up only if not at first row
                {
                    PrevRow(column, ref gi, ref ci);
                    if (ci == -1)                     // if we hit title line, go up another line
                    {
                        PrevRow(column, ref gi, ref ci);
                    }
                }
            }
            else if (key == Keys.Down)
            {
                if (gi < colorGroups[column].Length - 1 || ci < colorGroups[column][gi].Colors.Length - 1)                 // go down only if not at last row
                {
                    NextRow(column, ref gi, ref ci, ref blankLine);
                    if (ci == -1)                     // if we hit title line, go down another line
                    {
                        NextRow(column, ref gi, ref ci, ref blankLine);
                    }
                }
            }
            else if (key == Keys.Home)             // goto top of current column
            {
                gi = 0;
                ci = 0;
            }
            else if (key == Keys.End)             // goto bottom of current column
            {
                gi = colorGroups[column].Length - 1;
                ci = colorGroups[gi][ci].Colors.Length - 1;
            }
            else if (key == Keys.PageUp)             // goto top of previous group
            {
                gi = Math.Max(0, gi - 1);
                ci = 0;
            }
            else if (key == Keys.PageDown)             // goto top of next group
            {
                gi = Math.Min(colorGroups[column].Length - 1, gi + 1);
                ci = 0;
            }
            else             // Left or Right
            {
                if (key == Keys.Left && column > 0)
                {
                    column--;
                }
                else if (key == Keys.Right && column < columnCount - 1)
                {
                    column++;
                }

                gi = 0;
                ci = -1;
                for (int r = 0; r < row; r++)
                {
                    NextRow(column, ref gi, ref ci, ref blankLine);
                }

                if (blankLine || ci == -1)                 // if gone too far, or hit title line, go back up one line
                {
                    PrevRow(column, ref gi, ref ci);
                }
            }

            selGroup = colorGroups[column][gi];
            selIndex = ci;
            ScrollToMakeSelColorVisible();
        }
示例#4
0
        /// <summary>
        /// Generate color groups.
        /// </summary>
        /// <returns>Array of color groups.</returns>
        public override ColorGroup[] GenerateColorGroups()
        {
            redColors = new ColorGroup("Red Colors");
            redColors.Add(Color.IndianRed);
            redColors.Add(Color.LightCoral);
            redColors.Add(Color.Salmon);
            redColors.Add(Color.DarkSalmon);
            redColors.Add(Color.LightSalmon);
            redColors.Add(Color.Red);
            redColors.Add(Color.Crimson);
            redColors.Add(Color.Firebrick);
            redColors.Add(Color.DarkRed);

            pinkColors = new ColorGroup("Pink Colors");
            pinkColors.Add(Color.Pink);
            pinkColors.Add(Color.LightPink);
            pinkColors.Add(Color.HotPink);
            pinkColors.Add(Color.DeepPink);
            pinkColors.Add(Color.MediumVioletRed);
            pinkColors.Add(Color.PaleVioletRed);

            orangeColors = new ColorGroup("Orange Colors");
            orangeColors.Add(Color.LightSalmon);
            orangeColors.Add(Color.Coral);
            orangeColors.Add(Color.Tomato);
            orangeColors.Add(Color.OrangeRed);
            orangeColors.Add(Color.DarkOrange);
            orangeColors.Add(Color.Orange);

            yellowColors = new ColorGroup("Yellow Colors");
            yellowColors.Add(Color.Gold);
            yellowColors.Add(Color.Yellow);
            yellowColors.Add(Color.LightYellow);
            yellowColors.Add(Color.LemonChiffon);
            yellowColors.Add(Color.LightGoldenrodYellow);
            yellowColors.Add(Color.PapayaWhip);
            yellowColors.Add(Color.Moccasin);
            yellowColors.Add(Color.PeachPuff);
            yellowColors.Add(Color.PaleGoldenrod);
            yellowColors.Add(Color.Khaki);
            yellowColors.Add(Color.DarkKhaki);

            purpleColors = new ColorGroup("Purple Colors");
            purpleColors.Add(Color.Lavender);
            purpleColors.Add(Color.Thistle);
            purpleColors.Add(Color.Plum);
            purpleColors.Add(Color.Violet);
            purpleColors.Add(Color.Orchid);
            purpleColors.Add(Color.Fuchsia);
            purpleColors.Add(Color.Magenta);
            purpleColors.Add(Color.MediumOrchid);
            purpleColors.Add(Color.MediumPurple);
            purpleColors.Add(Color.BlueViolet);
            purpleColors.Add(Color.DarkViolet);
            purpleColors.Add(Color.DarkOrchid);
            purpleColors.Add(Color.DarkMagenta);
            purpleColors.Add(Color.Purple);
            purpleColors.Add(Color.Indigo);
            purpleColors.Add(Color.DarkSlateBlue);
            purpleColors.Add(Color.SlateBlue);
            purpleColors.Add(Color.MediumSlateBlue);

            greenColors = new ColorGroup("Green Colors");
            greenColors.Add(Color.GreenYellow);
            greenColors.Add(Color.Chartreuse);
            greenColors.Add(Color.LawnGreen);
            greenColors.Add(Color.Lime);
            greenColors.Add(Color.LimeGreen);
            greenColors.Add(Color.PaleGreen);
            greenColors.Add(Color.LightGreen);
            greenColors.Add(Color.MediumSpringGreen);
            greenColors.Add(Color.SpringGreen);
            greenColors.Add(Color.MediumSeaGreen);
            greenColors.Add(Color.SeaGreen);
            greenColors.Add(Color.ForestGreen);
            greenColors.Add(Color.Green);
            greenColors.Add(Color.DarkGreen);
            greenColors.Add(Color.YellowGreen);
            greenColors.Add(Color.OliveDrab);
            greenColors.Add(Color.Olive);
            greenColors.Add(Color.DarkOliveGreen);
            greenColors.Add(Color.MediumAquamarine);
            greenColors.Add(Color.DarkSeaGreen);
            greenColors.Add(Color.LightSeaGreen);
            greenColors.Add(Color.DarkCyan);
            greenColors.Add(Color.Teal);

            blueColors = new ColorGroup("Blue Colors");
            blueColors.Add(Color.Cyan);
            blueColors.Add(Color.LightCyan);
            blueColors.Add(Color.PaleTurquoise);
            blueColors.Add(Color.Aquamarine);
            blueColors.Add(Color.Turquoise);
            blueColors.Add(Color.MediumTurquoise);
            blueColors.Add(Color.DarkTurquoise);
            blueColors.Add(Color.CadetBlue);
            blueColors.Add(Color.SteelBlue);
            blueColors.Add(Color.LightSteelBlue);
            blueColors.Add(Color.PowderBlue);
            blueColors.Add(Color.LightBlue);
            blueColors.Add(Color.SkyBlue);
            blueColors.Add(Color.LightSkyBlue);
            blueColors.Add(Color.DeepSkyBlue);
            blueColors.Add(Color.DodgerBlue);
            blueColors.Add(Color.CornflowerBlue);
            blueColors.Add(Color.RoyalBlue);
            blueColors.Add(Color.Blue);
            blueColors.Add(Color.MediumBlue);
            blueColors.Add(Color.DarkBlue);
            blueColors.Add(Color.Navy);
            blueColors.Add(Color.MidnightBlue);

            brownColors = new ColorGroup("Brown Colors");
            brownColors.Add(Color.Cornsilk);
            brownColors.Add(Color.BlanchedAlmond);
            brownColors.Add(Color.Bisque);
            brownColors.Add(Color.NavajoWhite);
            brownColors.Add(Color.Wheat);
            brownColors.Add(Color.BurlyWood);
            brownColors.Add(Color.Tan);
            brownColors.Add(Color.RosyBrown);
            brownColors.Add(Color.SandyBrown);
            brownColors.Add(Color.Goldenrod);
            brownColors.Add(Color.DarkGoldenrod);
            brownColors.Add(Color.Peru);
            brownColors.Add(Color.Chocolate);
            brownColors.Add(Color.SaddleBrown);
            brownColors.Add(Color.Sienna);
            brownColors.Add(Color.Brown);
            brownColors.Add(Color.Maroon);

            whiteColors = new ColorGroup("White Colors");
            whiteColors.Add(Color.White);
            whiteColors.Add(Color.Snow);
            whiteColors.Add(Color.Honeydew);
            whiteColors.Add(Color.MintCream);
            whiteColors.Add(Color.Azure);
            whiteColors.Add(Color.AliceBlue);
            whiteColors.Add(Color.GhostWhite);
            whiteColors.Add(Color.WhiteSmoke);
            whiteColors.Add(Color.SeaShell);
            whiteColors.Add(Color.Beige);
            whiteColors.Add(Color.OldLace);
            whiteColors.Add(Color.FloralWhite);
            whiteColors.Add(Color.Ivory);
            whiteColors.Add(Color.AntiqueWhite);
            whiteColors.Add(Color.Linen);
            whiteColors.Add(Color.LavenderBlush);
            whiteColors.Add(Color.MistyRose);

            grayColors = new ColorGroup("Gray Colors");
            grayColors.Add(Color.Gainsboro);
            grayColors.Add(Color.LightGray);
            grayColors.Add(Color.Silver);
            grayColors.Add(Color.DarkGray);
            grayColors.Add(Color.Gray);
            grayColors.Add(Color.DimGray);
            grayColors.Add(Color.LightSlateGray);
            grayColors.Add(Color.SlateGray);
            grayColors.Add(Color.DarkSlateGray);
            grayColors.Add(Color.Black);

            return(new ColorGroup[]
            {
                redColors,
                pinkColors,
                orangeColors,
                yellowColors,
                purpleColors,
                greenColors,
                blueColors,
                brownColors,
                whiteColors,
                grayColors
            });
        }