ComponentFactory.Krypton.Toolkit.RenderStandard.DrawDragDockingSquaresBackground C# (CSharp) Method

DrawDragDockingSquaresBackground() private method

private DrawDragDockingSquaresBackground ( Graphics g, Color inside, Color border, RenderDragDockingData dragData ) : void
g System.Drawing.Graphics
inside Color
border Color
dragData RenderDragDockingData
return void
        private void DrawDragDockingSquaresBackground(Graphics g, 
                                                      Color inside, 
                                                      Color border,
                                                      RenderDragDockingData dragData)
        {
            Color start = Color.FromArgb(190, 190, 190);
            using (Pen borderPen = new Pen(border))
            {
                using (SolidBrush insideBrush = new SolidBrush(inside))
                {
                    using (LinearGradientBrush gradientLL = new LinearGradientBrush(new Rectangle(-1, -1, 5, 5), start, inside, 0f),
                                               gradientTL = new LinearGradientBrush(new Rectangle(-1, 23, 5, 5), start, inside, 90f),
                                               gradientCC = new LinearGradientBrush(new Rectangle(24, 25, 5, 5), start, inside, 45f),
                                               gradientLT = new LinearGradientBrush(new Rectangle(28, -1, 5, 5), start, inside, 0f),
                                               gradientML = new LinearGradientBrush(new Rectangle(22, -1, 5, 5), start, inside, 0f),
                                               gradientMT = new LinearGradientBrush(new Rectangle(-1, 22, 5, 5), start, inside, 90f),
                                               gradientTT = new LinearGradientBrush(new Rectangle(-1, -1, 5, 5), start, inside, 90f))
                    {
                        // Draw all the background cross?
                        if (dragData.ShowBack)
                        {
                            // Create points for a polygon
                            Point[] pts = new Point[]{new Point(0,  29), new Point(23, 29),
                                                      new Point(29, 23), new Point(29, 0),
                                                      new Point(57, 0),  new Point(57, 23),
                                                      new Point(63, 29), new Point(87, 29),
                                                      new Point(87, 57), new Point(63, 57),
                                                      new Point(57, 63), new Point(57, 87),
                                                      new Point(29, 87), new Point(29, 63),
                                                      new Point(23, 57), new Point(0,  57)};

                            // Fill this area with a solid colour
                            g.FillPolygon(insideBrush, pts);

                            // Draw shadow at some of the box edges
                            g.FillPolygon(gradientLL, new Point[] { new Point(1, 57), new Point(1, 30), new Point(4, 33), new Point(4, 57) });
                            g.FillPolygon(gradientTL, new Point[] { new Point(1, 30), new Point(25, 30), new Point(27, 33), new Point(3, 33) });
                            g.FillPolygon(gradientCC, new Point[] { new Point(23, 30), new Point(30, 23), new Point(33, 26), new Point(26, 33) });
                            g.FillPolygon(gradientLT, new Point[] { new Point(30, 1), new Point(30, 24), new Point(33, 26), new Point(33, 4) });
                            g.FillPolygon(gradientTT, new Point[] { new Point(30, 1), new Point(57, 1), new Point(57, 4), new Point(33, 4) });
                            g.FillPolygon(gradientLT, new Point[] { new Point(30, 63), new Point(30, 87), new Point(33, 87), new Point(33, 66) });
                            g.FillPolygon(gradientTL, new Point[] { new Point(63, 30), new Point(87, 30), new Point(87, 33), new Point(66, 33) });

                            // Draw outline in darker colour
                            g.DrawPolygon(borderPen, pts);
                        }
                        else if (dragData.ShowLeft && dragData.ShowRight)
                        {
                            // Create points for a polygon
                            Point[] pts = new Point[]{new Point(0,  29), new Point(23, 29),
                                                      new Point(29, 23), new Point(57, 23),
                                                      new Point(63, 29), new Point(87, 29),
                                                      new Point(87, 57), new Point(63, 57),
                                                      new Point(57, 63), new Point(29, 63),
                                                      new Point(23, 57), new Point(0,  57)};

                            // Fill this area with a solid colour
                            g.FillPolygon(insideBrush, pts);

                            // Draw shadow at some of the box edges
                            g.FillPolygon(gradientLL, new Point[] { new Point(1, 57), new Point(1, 30), new Point(4, 33), new Point(4, 57) });
                            g.FillPolygon(gradientTL, new Point[] { new Point(1, 30), new Point(25, 30), new Point(27, 33), new Point(3, 33) });
                            g.FillPolygon(gradientCC, new Point[] { new Point(23, 30), new Point(30, 23), new Point(33, 26), new Point(26, 33) });
                            g.FillPolygon(gradientMT, new Point[] { new Point(30, 24), new Point(57, 24), new Point(60, 27), new Point(33, 27) });
                            g.FillPolygon(gradientTL, new Point[] { new Point(63, 30), new Point(87, 30), new Point(87, 33), new Point(66, 33) });

                            // Draw outline in darker colour
                            g.DrawPolygon(borderPen, pts);
                        }
                        else if (dragData.ShowLeft)
                        {
                            // Only draw the background for the left square
                            g.FillRectangle(insideBrush, 0, 29, 31, 28);
                            g.DrawRectangle(borderPen, 0, 29, 31, 28);
                        }
                        else if (dragData.ShowRight)
                        {
                            // Only draw the background for the right square
                            g.FillRectangle(insideBrush, 56, 29, 31, 28);
                            g.DrawRectangle(borderPen, 56, 29, 31, 28);
                        }
                        else if (dragData.ShowTop && dragData.ShowBottom)
                        {
                            // Create points for a polygon
                            Point[] pts = new Point[]{new Point(23, 29), new Point(29, 23),
                                                      new Point(29, 0),  new Point(57, 0),
                                                      new Point(57, 23), new Point(63, 29),
                                                      new Point(63, 57), new Point(57, 63),
                                                      new Point(57, 87), new Point(29, 87),
                                                      new Point(29, 63), new Point(23, 57)};

                            // Fill this area with a solid colour
                            g.FillPolygon(insideBrush, pts);

                            g.FillPolygon(gradientLT, new Point[] { new Point(30, 1), new Point(30, 24), new Point(33, 26), new Point(33, 4) });
                            g.FillPolygon(gradientTT, new Point[] { new Point(30, 1), new Point(57, 1), new Point(57, 4), new Point(33, 4) });
                            g.FillPolygon(gradientCC, new Point[] { new Point(23, 30), new Point(30, 23), new Point(33, 26), new Point(26, 33) });
                            g.FillPolygon(gradientML, new Point[] { new Point(24, 57), new Point(24, 30), new Point(27, 33), new Point(27, 60) });
                            g.FillPolygon(gradientLT, new Point[] { new Point(30, 63), new Point(30, 87), new Point(33, 87), new Point(33, 66) });

                            // Draw outline in darker colour
                            g.DrawPolygon(borderPen, pts);
                        }
                        else if (dragData.ShowTop)
                        {
                            // Only draw the background for the top square
                            g.FillRectangle(insideBrush, 29, 0, 28, 31);
                            g.DrawRectangle(borderPen, 29, 0, 28, 31);
                        }
                        else if (dragData.ShowBottom)
                        {
                            // Only draw the background for the bottom square
                            g.FillRectangle(insideBrush, 29, 56, 28, 31);
                            g.DrawRectangle(borderPen, 29, 56, 28, 31);
                        }
                        else if (dragData.ShowMiddle)
                        {
                            // Only draw the background for the middle square
                            Point[] pts = new Point[]{new Point(23, 29), new Point(29, 23),
                                                      new Point(57, 23), new Point(63, 29),
                                                      new Point(63, 57), new Point(57, 63),
                                                      new Point(29, 63), new Point(23, 57)};

                            g.FillPolygon(insideBrush, pts);
                            g.DrawPolygon(borderPen, pts);
                        }
                    }
                }
            }
        }
RenderStandard