예제 #1
0
        private void FillMenuIconGradient(GraphicsPath XFillPath, Graphics g, List <Color> mix)
        {
            using (EAntiAlias xaa = new EAntiAlias(g))
            {
                using (LinearGradientBrush lgb = new LinearGradientBrush(XFillPath.GetBounds(), mix[0], mix[4], LinearGradientMode.Vertical))
                {
                    lgb.InterpolationColors = EFormHelper.ColorMix(mix, false);

                    g.FillPath(lgb, XFillPath);
                }
            }
        }
예제 #2
0
        public GraphicsPath FindX3DBorderPrimitive(Rectangle rcBorder)
        {
            switch (m_eBorderType)
            {
            case EBorderType.Rounded:
                m_BorderShape = EFormHelper.RoundRect((RectangleF)rcBorder, m_lRadius, m_lRadius, 0, 0);
                break;

            case EBorderType.Inclinated:
                m_BorderShape = CreateInclinatedBorderPath(rcBorder);
                break;
            }
            return(m_BorderShape);
        }
예제 #3
0
        /// <summary>
        /// Fills titlebar button.
        /// </summary>
        /// <param name="rcBtn">Button bounding rectangle.</param>
        /// <param name="g">Graphics object.</param>
        /// <param name="clrStart">Color used to fill the button.</param>
        /// <param name="clrEnd">Color used to fill the outer glow.</param>
        /// <param name="XBoxClip">Path to perform clipping tasks.</param>
        private void FillButton(Rectangle rcBtn, Graphics g, Color clrStart, Color clrEnd, GraphicsPath XBoxClip)
        {
            switch (m_eFillMode)
            {
            case EButtonFillMode.UpperGlow:
                rcBtn.Height = 3;
                using (LinearGradientBrush lgb = new LinearGradientBrush(rcBtn, clrStart, clrEnd, LinearGradientMode.Vertical))
                {
                    g.FillRectangle(lgb, rcBtn);
                }
                break;

            case EButtonFillMode.FullFill:
                // restrict drawing inside button box / rectangle:
                g.SetClip(XBoxClip);
                g.SetClip(rcBtn, CombineMode.Intersect);

                #region Fill button

                using (SolidBrush sb = new SolidBrush(clrStart))
                {
                    g.FillRectangle(sb, rcBtn);
                }

                #endregion

                using (EAntiAlias xaa = new EAntiAlias(g))
                {
                    #region Fill shine

                    using (GraphicsPath XBtnGlow = new GraphicsPath())
                    {
                        XBtnGlow.AddEllipse(rcBtn.Left - 5, rcBtn.Bottom - rcBtn.Height / 2 + 3, rcBtn.Width + 11, rcBtn.Height + 11);
                        using (PathGradientBrush pgb = new PathGradientBrush(XBtnGlow))
                        {
                            pgb.CenterColor    = Color.FromArgb(235, Color.White);
                            pgb.SurroundColors = new Color[] { Color.FromArgb(0, clrEnd) };
                            pgb.SetSigmaBellShape(0.8f);

                            g.FillPath(pgb, XBtnGlow);
                        }
                    }

                    #endregion

                    #region Fill upper glow

                    rcBtn.Height = rcBtn.Height / 2 - 2;
                    using (LinearGradientBrush lgb = new LinearGradientBrush(rcBtn, Color.FromArgb(80, Color.White), Color.FromArgb(140, Color.White), LinearGradientMode.Vertical))
                    {
                        using (GraphicsPath XGlowPath = EFormHelper.RoundRect((RectangleF)rcBtn, 0, 0, 4, 4))
                        {
                            lgb.WrapMode = WrapMode.TileFlipXY;
                            g.FillPath(lgb, XGlowPath);
                        }
                    }

                    #endregion
                }
                // reset clipping back:
                g.ResetClip();
                break;
            }
        }
예제 #4
0
        /// <summary> Draws inner & outer 3D borders. </summary> <param name="g"> Graphics
        /// object</param> <param name="XBorderPath"> Border path</param> <param name="rcBorder">
        /// Border bounds</param> <param name="lCorner"> Radius of a rounded rectangle</param>
        /// <param name="bFlat"> Controls border type mode</param>
        private void DrawBorderLine(Graphics g, GraphicsPath XBorderPath, Rectangle rcBorder, int lCorner, bool bFlat)
        {
            int lC = lCorner;

            #region Draw outer border

            if (bFlat)
            {
                switch (m_eBorderType)
                {
                case EBorderType.Rectangular:
                    XBorderPath = EFormHelper.RoundRect((RectangleF)rcBorder, lC, lC, lC, lC);
                    break;

                case EBorderType.Rounded:
                    XBorderPath = EFormHelper.RoundRect((RectangleF)rcBorder, lC, lC, 0, 0);
                    break;

                case EBorderType.Inclinated:
                    XBorderPath = CreateInclinatedBorderPath(rcBorder);
                    break;
                }
                using (Pen pFlat = new Pen(m_clrFlatBorder))
                {
                    g.DrawPath(pFlat, XBorderPath);
                }
            }
            else
            {
                for (int o = 0; o < m_clrOuterBorder.Length; o++)
                {
                    switch (m_eBorderType)
                    {
                    case EBorderType.Rectangular:
                        XBorderPath = EFormHelper.RoundRect((RectangleF)rcBorder, lC, lC, lC, lC);
                        break;

                    case EBorderType.Rounded:
                        XBorderPath = EFormHelper.RoundRect((RectangleF)rcBorder, lC, lC, 0, 0);
                        break;

                    case EBorderType.Inclinated:
                        XBorderPath = CreateInclinatedBorderPath(rcBorder);
                        break;
                    }
                    Pen pen = new Pen(m_clrOuterBorder[o]);
                    g.DrawPath(pen, XBorderPath);
                    DeflateRect(ref rcBorder);
                    if (m_eBorderType != EBorderType.Rectangular)
                    {
                        lC--;
                    }
                }

                #endregion

                #region Draw inner border

                rcBorder.Y      += m_lTitleBarHeight;
                rcBorder.Height -= m_lTitleBarHeight;

                for (int i = 0; i < m_clrInnerBorder.Length; i++)
                {
                    Pen penInner = new Pen(m_clrInnerBorder[i]);
                    g.DrawRectangle(penInner, rcBorder);
                    DeflateRect(ref rcBorder);
                }
            }

            #endregion
        }
예제 #5
0
        public void RenderCtrlButtonsBox(Rectangle rcBox, Graphics g, int lSinglePosX, int lSinglePosY)
        {
            using (EAntiAlias xaa = new EAntiAlias(g))
            {
                int lBtnWidth  = 0;
                int lBtnHeight = 0;
                foreach (EFormCtrlButtons btn in m_eCtrlButtons)
                {
                    if (btn.ButtonStyle == EFormCtrlButtons.EButtonStyle.MacStyle)
                    {
                        m_bShouldRenderButtonBox = false;
                    }
                    else
                    {
                        m_bShouldRenderButtonBox = true;
                    }

                    lBtnWidth  = btn.ButtonWidth;
                    lBtnHeight = btn.ButtonHeight;
                    break;
                }
                int lX = rcBox.Right - lBtnWidth;
                int lY = rcBox.Bottom - lBtnHeight;

                {
                    if (m_bShouldRenderButtonBox)
                    {
                        using (GraphicsPath XButtonBox = BuildCtrlButtonsBox(rcBox))
                        {
                            switch (m_eButtonBoxFill)
                            {
                            case EButtonBoxFill.ColorMix:
                                using (LinearGradientBrush lgb = new LinearGradientBrush(rcBox, m_ButtonBoxColors[0], m_ButtonBoxColors[4], LinearGradientMode.Vertical))
                                {
                                    lgb.InterpolationColors = EFormHelper.ColorMix(m_ButtonBoxColors, false);

                                    g.FillPath(lgb, XButtonBox);
                                }
                                break;

                            case EButtonBoxFill.TitleBarRectangleRendering:
                                RectangleF rcDownRect = XButtonBox.GetBounds();
                                RectangleF rcUpRect   = XButtonBox.GetBounds();
                                g.SetClip(XButtonBox);
                                rcUpRect.Height /= 2;
                                using (LinearGradientBrush lgbUpperRect = new LinearGradientBrush(rcUpRect, m_clrUpperFillStart, m_clrUpperFillEnd, LinearGradientMode.Vertical))
                                {
                                    lgbUpperRect.WrapMode = WrapMode.TileFlipY;
                                    g.FillRectangle(lgbUpperRect, rcUpRect);
                                }

                                rcDownRect.Height = rcDownRect.Height / 2;
                                rcDownRect.Y      = rcUpRect.Bottom;
                                using (LinearGradientBrush lgbDwnRect = new LinearGradientBrush(rcDownRect, m_clrFillStart, m_clrFillEnd, LinearGradientMode.Vertical))
                                {
                                    g.FillRectangle(lgbDwnRect, rcDownRect);
                                }

                                g.ResetClip();
                                break;
                            }

                            #region Draw button separators

                            g.DrawLine(new Pen(m_clrButtonBoxOuter), rcBox.Right - lBtnWidth, rcBox.Bottom, rcBox.Right - lBtnWidth, rcBox.Top + 1);
                            g.DrawLine(new Pen(m_clrButtonBoxInner), rcBox.Right - lBtnWidth - 1, rcBox.Bottom, rcBox.Right - lBtnWidth - 1, rcBox.Top + 1);
                            g.DrawLine(new Pen(m_clrButtonBoxOuter), rcBox.Right - lBtnWidth * 2, rcBox.Bottom - 2, rcBox.Right - lBtnWidth * 2, rcBox.Top + 1);
                            g.DrawLine(new Pen(m_clrButtonBoxInner), rcBox.Right - lBtnWidth * 2 - 1, rcBox.Bottom - 2, rcBox.Right - lBtnWidth * 2 - 1, rcBox.Top + 1);

                            #endregion

                            #region Render buttons

                            g.SetClip(XButtonBox);
                            foreach (EFormCtrlButtons btn in m_eCtrlButtons)
                            {
                                btn.ButtonLeft = lX;
                                btn.ButtonTop  = lY;

                                btn.RenderCtrlButtons(btn.ButtonLeft, btn.ButtonTop, g, XButtonBox);
                                lX -= btn.ButtonWidth + 1;
                            }
                            g.ResetClip();

                            #endregion

                            g.DrawPath(new Pen(m_clrButtonBoxOuter), XButtonBox);

                            DrawInnerCtrlBoxBorder(g, rcBox, m_clrButtonBoxInner);
                        }
                    }
                    else
                    {
                        int lSP = lSinglePosX;
                        foreach (EFormCtrlButtons btn in m_eCtrlButtons)
                        {
                            //btn.ButtonHeight = 13;
                            //btn.ButtonWidth = 13;
                            btn.ButtonLeft = lSP;
                            btn.ButtonTop  = lSinglePosY;

                            btn.RenderCtrlButtons(btn.ButtonLeft, btn.ButtonTop, g, null);
                            //lSP -= btn.ButtonWidth + 4;
                            lSP -= btn.ButtonWidth / 2 + 4;
                        }
                    }
                }
            }
        }
예제 #6
0
        private void FillTitleBar(Graphics g, Rectangle rcTitleBar)
        {
            GraphicsPath XTitleBarPath = new GraphicsPath();

            XTitleBarPath = BuildTitleBarShape(rcTitleBar);
            using (EAntiAlias xaa = new EAntiAlias(g))
            {
                #region Fill titlebar

                switch (m_eTitleBarFill)
                {
                case ETitleBarFill.AdvancedRendering:
                    using (LinearGradientBrush lgb = new LinearGradientBrush(rcTitleBar, m_TitleBarMix[0], m_TitleBarMix[4], LinearGradientMode.Vertical))
                    {
                        lgb.InterpolationColors = EFormHelper.ColorMix(m_TitleBarMix, true);

                        g.FillPath(lgb, XTitleBarPath);
                    }

                    #region Draw titlebar glow

                    using (GraphicsPath XGlow = new GraphicsPath())
                    {
                        XGlow.AddEllipse(rcTitleBar.Left, rcTitleBar.Bottom / 2 + 4, rcTitleBar.Width, rcTitleBar.Height);

                        using (PathGradientBrush pgb = new PathGradientBrush(XGlow))
                        {
                            pgb.CenterColor    = Color.White;
                            pgb.SurroundColors = new Color[] { Color.FromArgb(0, 229, 121, 13) };

                            g.SetClip(XTitleBarPath);
                            g.FillPath(pgb, XGlow);
                            g.ResetClip();
                        }
                    }

                    #endregion

                    break;

                case ETitleBarFill.Texture:
                    if (m_TitleBarTexture != null)
                    {
                        using (TextureBrush tb = new TextureBrush(m_TitleBarTexture))
                        {
                            g.FillPath(tb, XTitleBarPath);
                        }
                    }
                    break;

                case ETitleBarFill.LinearRendering:
                    RectangleF rcLinearFill = XTitleBarPath.GetBounds();
                    g.SetClip(XTitleBarPath);
                    using (LinearGradientBrush lgbLinearFill = new LinearGradientBrush(rcLinearFill, m_clrFillStart, m_clrFillEnd, LinearGradientMode.Vertical))
                    {
                        g.FillRectangle(lgbLinearFill, rcLinearFill);
                    }

                    g.ResetClip();
                    break;

                case ETitleBarFill.UpperGlow:
                    RectangleF rcGlow = XTitleBarPath.GetBounds();
                    g.SetClip(XTitleBarPath);
                    rcGlow.Height /= 2;
                    using (LinearGradientBrush lgbUpperGlow = new LinearGradientBrush(rcGlow, m_clrUpperFillStart, m_clrUpperFillEnd, LinearGradientMode.Vertical))
                    {
                        g.FillRectangle(lgbUpperGlow, rcGlow);
                    }

                    g.ResetClip();
                    break;

                case ETitleBarFill.RectangleRendering:
                    RectangleF rcDownRect = XTitleBarPath.GetBounds();
                    RectangleF rcUpRect   = XTitleBarPath.GetBounds();
                    g.SetClip(XTitleBarPath);
                    rcUpRect.Height /= 2;
                    using (LinearGradientBrush lgbUpperRect = new LinearGradientBrush(rcUpRect, m_clrUpperFillStart, m_clrUpperFillEnd, LinearGradientMode.Vertical))
                    {
                        lgbUpperRect.WrapMode = WrapMode.TileFlipY;
                        g.FillRectangle(lgbUpperRect, rcUpRect);
                    }

                    rcDownRect.Height = rcDownRect.Height / 2;
                    rcDownRect.Y      = rcUpRect.Bottom;
                    using (LinearGradientBrush lgbDwnRect = new LinearGradientBrush(rcDownRect, m_clrFillStart, m_clrFillEnd, LinearGradientMode.Vertical))
                    {
                        g.FillRectangle(lgbDwnRect, rcDownRect);
                    }

                    g.ResetClip();
                    break;
                }

                #endregion

                #region Draw back image

                DrawTitleBarBackImage(g, rcTitleBar, XTitleBarPath);

                #endregion

                DrawOuterTitleBarBorder(g, rcTitleBar, m_clrOuterTitleBarColor);
                DrawInnerTitleBarBorder(g, rcTitleBar, m_clrInnerTitleBarColor);
            }
            XTitleBarPath.Dispose();
        }