/// <summary>
        /// Generates a GradientVisualSettings properties class object and initializes each of its associated properties of the gradient visual settings with
        /// default values.  A different visual setting will be stored for each of the various states each property can be accessed in their associated control.
        /// </summary>
        /// <param name="DefaultGradColor1"></param>
        /// <param name="DefaultGradColor2"></param>
        /// <param name="DefaultGradType"></param>
        /// <param name="fDefaultGradSpan"></param>
        /// <param name="blUseDefaultGradSpan"></param>
        /// <param name="ptDefaultGradOffset"></param>
        /// <param name="blDrawGradient"></param>
        /// <returns></returns>
        public static VisualSettingProperties <GradientVisualSettings> CreateGradientVisualSettings(
            Color DefaultGradColor1, Color DefaultGradColor2,
            CoolGradientType DefaultGradType, float fDefaultGradSpan,
            bool blUseDefaultGradSpan, Point ptDefaultGradOffset, bool blDrawGradient)
        {
            try
            {
                VisualSettingProperties <GradientVisualSettings> gradSettingProps = new VisualSettings.VisualSettingProperties <VisualSettings.GradientVisualSettings>();

                for (int i = 0; i <= 5; i++)
                {
                    VisualSettingEnum      setting        = (VisualSettingEnum)i;
                    GradientVisualSettings gradVisSetting =
                        new GradientVisualSettings
                    {
                        GradientColor1         = DefaultGradColor1,
                        GradientColor2         = DefaultGradColor2,
                        GradientType           = DefaultGradType,
                        GradientSpan           = fDefaultGradSpan,
                        UseDefaultGradientSpan = blUseDefaultGradSpan,
                        GradientOffset         = ptDefaultGradOffset,
                        DrawGradient           = blDrawGradient
                    };

                    gradSettingProps.AddSetting(setting, gradVisSetting);
                }//next i

                return(gradSettingProps);
            }
            catch (Exception err)
            {
                ErrorHandler.ShowErrorMessage(err, "Error in CreateGradientVisualSettings Overload 1 function of VisualSettingPropGenerator class.");
                return(null);
            }
        }
Example #2
0
        /// <summary>
        /// Draws the gradient background image of the DotCoolNativeButton according to the background gradient settings that are set for the control.
        /// NOTE: The DotCoolNativeButton will use the button's background image, rather than the paint event handlers to render the background gradient
        /// image so that the button's native functionality can be maintained.
        /// </summary>
        protected virtual void DrawGradientBackgroundImage()
        {
            Bitmap   bmpGradBackMem = null;
            Graphics gGradBackMem   = null;
            Graphics gGradBack      = null;

            try
            {
                bmpGradBackMem = new Bitmap(ClientRectangle.Width, ClientRectangle.Height);
                gGradBackMem   = Graphics.FromImage(bmpGradBackMem);

                CoolGradientType BackGradTypeActive   = GetBackGradientType();
                Color            BackGradColor1Active = GetBackGradientColor(1);
                Color            BackGradColor2Active = GetBackGradientColor(2);
                float            fGradSpan            = GetBackGradientSpan();
                Point            ptGradOffset         = GetBackGradientOffset();

                if (BackGradTypeActive == CoolGradientType.None || BackGradColor1Active == Color.Transparent)
                {
                    ClearGradientBackgroundImage();
                    return;
                }
                else
                {
                    CoolGradient.DrawGradient(BackGradTypeActive, gGradBackMem, BackGradColor1Active, BackGradColor2Active, ClientRectangle,
                                              fGradSpan, ptGradOffset.X, ptGradOffset.Y);
                }

                this.BackgroundImage = new Bitmap(ClientRectangle.Width, ClientRectangle.Height);
                gGradBack            = Graphics.FromImage(this.BackgroundImage);
                gGradBack.DrawImage(bmpGradBackMem, ClientRectangle);

                this.Refresh();
            }
            catch (Exception err)
            {
                ErrorHandler.ShowErrorMessage(err, "Error in DrawGradientBackgroundImage function of DotCoolNativeButton control.");
            }
            finally
            {
                if (gGradBackMem != null)
                {
                    gGradBackMem.Dispose();
                }

                if (gGradBack != null)
                {
                    gGradBack.Dispose();
                }

                if (bmpGradBackMem != null)
                {
                    bmpGradBackMem.Dispose();
                }
            }
        }
Example #3
0
        /// <summary>
        /// Retrieves the default gradient span setting for the gradient type specified in the function's parameter.  Each various gradient type will have
        /// a default gradient span that will be considered the optimal size for displaying the specific type of gradient.
        /// </summary>
        /// <param name="gradType"></param>
        /// <returns></returns>
        public static float GetDefaultGradientSpan(CoolGradientType gradType)
        {
            try
            {
                switch (gradType)
                {
                case CoolGradientType.Horizontal:
                case CoolGradientType.Vertical:
                case CoolGradientType.ForwardDiagonal:
                case CoolGradientType.BackwardDiagonal:
                    return(1f);

                case CoolGradientType.Ellipsis:
                    return(2f);

                case CoolGradientType.Circular:
                    return(1.5f);

                case CoolGradientType.FourPointPoly:
                    return(1f);

                case CoolGradientType.TenPointPoly:
                    return(1f);

                case CoolGradientType.Triangular:
                    return(3f);
                }//end switch

                return(1f);
            }
            catch (Exception err)
            {
                ErrorHandler.ShowErrorMessage(err, "Error in GetDefaultGradientSpan function of CoolGradient class.");
                return(1f);
            }
        }
Example #4
0
        /// <summary>
        /// Draws the appropriate style of gradient based on gradient type flag specified in the function parameter.
        /// </summary>
        /// <param name="gradType"></param>
        /// <param name="graphics"></param>
        /// <param name="gradColor1"></param>
        /// <param name="gradColor2"></param>
        /// <param name="rectBounds"></param>
        /// <param name="fGradientSpan"></param>
        /// <param name="iOffsetX"></param>
        /// <param name="iOffsetY"></param>
        public static void DrawGradient(CoolGradientType gradType, Graphics graphics, Color gradColor1, Color gradColor2, Rectangle rectBounds,
                                        float fGradientSpan = 0f, int iOffsetX = 0, int iOffsetY = 0)
        {
            try
            {
                //graphics.SmoothingMode = SmoothingMode.HighQuality;
                //graphics.InterpolationMode = InterpolationMode.High;

                if (fGradientSpan == 0)
                {
                    fGradientSpan = GetDefaultGradientSpan(gradType);
                }

                switch (gradType)
                {
                case CoolGradientType.Horizontal:
                    DrawLinearGradient(graphics, gradColor1, gradColor2, rectBounds, LinearGradientMode.Horizontal, fGradientSpan, iOffsetX, iOffsetY);

                    break;

                case CoolGradientType.Vertical:
                    DrawLinearGradient(graphics, gradColor1, gradColor2, rectBounds, LinearGradientMode.Vertical, fGradientSpan, iOffsetX, iOffsetY);

                    break;

                case CoolGradientType.ForwardDiagonal:
                    DrawLinearGradient(graphics, gradColor1, gradColor2, rectBounds, LinearGradientMode.ForwardDiagonal, fGradientSpan, iOffsetX, iOffsetY);

                    break;

                case CoolGradientType.BackwardDiagonal:
                    DrawLinearGradient(graphics, gradColor1, gradColor2, rectBounds, LinearGradientMode.BackwardDiagonal, fGradientSpan, iOffsetX, iOffsetY);

                    break;

                case CoolGradientType.Ellipsis:
                case CoolGradientType.Circular:
                    DrawEllipsisGradient(graphics, gradColor1, gradColor2, rectBounds, fGradientSpan, iOffsetX, iOffsetY,
                                         gradType == CoolGradientType.Circular);

                    break;

                case CoolGradientType.FourPointPoly:
                    DrawPolyGradient(graphics, gradColor1, gradColor2, rectBounds, 4, fGradientSpan, iOffsetX, iOffsetY);

                    break;

                case CoolGradientType.TenPointPoly:
                    DrawPolyGradient(graphics, gradColor1, gradColor2, rectBounds, 10, fGradientSpan, iOffsetX, iOffsetY);

                    break;

                case CoolGradientType.Triangular:
                    DrawTriangleGradient(graphics, gradColor1, gradColor2, rectBounds, fGradientSpan, iOffsetX, iOffsetY);

                    break;
                }//end switch
            }
            catch (Exception err)
            {
                ErrorHandler.ShowErrorMessage(err, "Error in DrawGradient function of CoolGradient class.");
            }
        }
Example #5
0
        /// <summary>
        /// Draws the background gradient image in the control based on the various gradient settings that are set for the control.  All drawing will
        /// be performed in memory-based device context before rendering onto the control to allow for flicker-free drawing.
        /// </summary>
        protected virtual void DrawBackGradientImage(Graphics gCtl)
        {
            Bitmap        bmpGradBackMem = null;
            Graphics      gGradBackMem   = null;
            GraphicsState origGraphState = null;

            try
            {
                // At the beginning of your drawing
                origGraphState = gCtl.Save();

                bmpGradBackMem = new Bitmap(this.Width, this.Height);
                gGradBackMem   = Graphics.FromImage(bmpGradBackMem);

                CoolGradientType BackGradTypeActive   = GetBackGradientType();
                Color            BackGradColor1Active = GetBackGradientColor(1);
                Color            BackGradColor2Active = GetBackGradientColor(2);
                float            fGradientSpan        = GetBackGradientSpan();
                Point            ptGradOffset         = GetBackGradientOffset();

                Rectangle rectBounds = new Rectangle(0, 0, this.Width, this.Height);

                if (BackGradColor1Active != Color.Transparent && BackGradTypeActive != CoolGradientType.None)
                {
                    CoolDraw.DrawGradientShape(CoolShape.Rectangle, BackGradTypeActive, gGradBackMem, BackGradColor1Active,
                                               BackGradColor2Active, rectBounds, Color.Transparent, 0, fGradientSpan, ptGradOffset.X, ptGradOffset.Y);
                }
                else
                {
                    Color?FillColor = null;
                    if (BackGradColor1Active != Color.Transparent)
                    {
                        FillColor = BackGradColor1Active;
                    }

                    CoolDraw.DrawShape(CoolShape.Rectangle, gGradBackMem, rectBounds, Color.Transparent, 0,
                                       0, 0, FillColor);
                }//end if

                Rectangle rectDraw = new Rectangle(0, 0, this.Width, this.Height);
                //gCtl.CompositingMode = CompositingMode.SourceCopy;
                gCtl.DrawImage(bmpGradBackMem, rectDraw);
            }
            catch (Exception err)
            {
                ErrorHandler.ShowErrorMessage(err, "Error in DrawBackGradientImage function of DotCoolPanel control.");
            }
            finally
            {
                if (origGraphState != null)
                {
                    gCtl.Restore(origGraphState);
                }

                if (gGradBackMem != null)
                {
                    gGradBackMem.Dispose();
                }

                if (bmpGradBackMem != null)
                {
                    bmpGradBackMem.Dispose();
                }
            }
        }
        /// <summary>
        /// Draws the appropriate gradient check symbol in the box portion of the check control when the control is checked, according to the current
        /// state of the control.
        /// </summary>
        protected virtual void DrawCheckSymbol(Graphics gCtl)
        {
            Bitmap        bmpGradCheckMem = null;
            Graphics      gGradCheckMem   = null;
            GraphicsState origGraphState  = null;

            try
            {
                // At the beginning of your drawing
                origGraphState = gCtl.Save();

                bmpGradCheckMem = new Bitmap(CheckSize.Width, CheckSize.Height);
                gGradCheckMem   = Graphics.FromImage(bmpGradCheckMem);

                CoolGradientType CheckGradTypeActive   = GetCheckGradientType();
                Color            CheckGradColor1Active = GetCheckGradientColor(1);
                Color            CheckGradColor2Active = GetCheckGradientColor(2);
                float            fGradientSpan         = GetCheckGradientSpan();
                Point            ptGradOffset          = GetCheckGradientOffset();

                Color CheckBorderColorActive = GetCheckBorderColor();
                int   iBorderWidth           = CheckBorderWidth;

                Rectangle rectBounds = new Rectangle(Convert.ToInt32(iBorderWidth / 2), Convert.ToInt32(iBorderWidth / 2),
                                                     CheckSize.Width - iBorderWidth - 1,
                                                     CheckSize.Height - iBorderWidth - 1);

                Point ptCheckLocation = new Point(Convert.ToInt32(m_BoxBounds.Left) + GetBorderWidth() + CheckOffset.X,
                                                  Convert.ToInt32(m_BoxBounds.Top) + GetBorderWidth() + CheckOffset.Y);

                if (CheckGradColor1Active != Color.Transparent && CheckGradTypeActive != CoolGradientType.None)
                {
                    CoolDraw.DrawGradientShape(CheckShape, CheckGradTypeActive, gGradCheckMem, CheckGradColor1Active,
                                               CheckGradColor2Active, rectBounds, CheckBorderColorActive, iBorderWidth,
                                               fGradientSpan, ptGradOffset.X, ptGradOffset.Y,
                                               CheckRadius.X, CheckRadius.Y);
                }
                else
                {
                    Color?FillColor = null;
                    if (CheckGradColor1Active != Color.Transparent)
                    {
                        FillColor = CheckGradColor1Active;
                    }

                    CoolDraw.DrawShape(CheckShape, gGradCheckMem, rectBounds, CheckBorderColorActive, iBorderWidth,
                                       CheckRadius.X, CheckRadius.Y, FillColor);
                }//end if

                Rectangle rectDraw = new Rectangle(ptCheckLocation.X, ptCheckLocation.Y, CheckSize.Width, CheckSize.Height);

                gCtl.CompositingMode = CompositingMode.SourceOver;
                gCtl.DrawImage(bmpGradCheckMem, rectDraw);
            }
            catch (Exception err)
            {
                ErrorHandler.ShowErrorMessage(err, "Error in DrawCheckSymbol function of DotCoolCheckBase control.");
            }
            finally
            {
                if (origGraphState != null)
                {
                    gCtl.Restore(origGraphState);
                }

                if (gGradCheckMem != null)
                {
                    gGradCheckMem.Dispose();
                }

                if (bmpGradCheckMem != null)
                {
                    bmpGradCheckMem.Dispose();
                }
            }
        }