Ejemplo n.º 1
0
        /// <summary>
        /// 创建画刷,渲染背景和边框使用
        /// </summary>
        /// <param name="rect">画刷区域</param>
        /// <param name="baseColor">基色</param>
        /// <param name="pos1">基色位置1</param>
        /// <param name="pos2">基色位置2</param>
        /// <param name="reverse">是否反转</param>
        /// <param name="mode">渐变模式</param>
        /// <param name="style">样式</param>
        /// <returns>画刷</returns>
        public static Brush CreateBrush(Rectangle rect, Color baseColor, float pos1, float pos2, bool reverse, LinearGradientMode mode, BlendStyle style)
        {
            Brush brush = null;

            RectangleEx.MakeNotEmpty(ref rect);
            switch (style)
            {
            case BlendStyle.Solid:
            {
                SolidBrush brushTmp = new SolidBrush(baseColor);
                brush    = brushTmp;
                brushTmp = null;
            }
            break;

            case BlendStyle.Gradient:
            {
                LinearGradientBrush brushTmp = new LinearGradientBrush(rect, Color.Empty, Color.Empty, mode);
                //画刷设置
                ColorBlend blendTmp = new ColorBlend();
                Color[]    colors;
                float[]    positions;
                RenderEngine.GetColorPosGradient(baseColor, pos1, pos2, reverse, false, out colors, out positions);
                blendTmp.Colors    = colors;
                blendTmp.Positions = positions;
                //
                brushTmp.InterpolationColors = blendTmp;
                brush    = brushTmp;
                brushTmp = null;
            }
            break;

            case BlendStyle.FadeIn:
            {
                LinearGradientBrush brushTmp = new LinearGradientBrush(rect, Color.Empty, Color.Empty, mode);
                //画刷设置
                ColorBlend blendTmp = new ColorBlend();
                Color[]    colors;
                float[]    positions;
                RenderEngine.GetColorPosFadeIn(baseColor, pos1, pos2, reverse, false, out colors, out positions);
                blendTmp.Colors    = colors;
                blendTmp.Positions = positions;
                //
                brushTmp.InterpolationColors = blendTmp;
                brush    = brushTmp;
                brushTmp = null;
            }
            break;

            case BlendStyle.FadeOut:
            {
                LinearGradientBrush brushTmp = new LinearGradientBrush(rect, Color.Empty, Color.Empty, mode);
                //画刷设置
                ColorBlend blendTmp = new ColorBlend();
                Color[]    colors;
                float[]    positions;
                RenderEngine.GetColorPosFadeOut(baseColor, pos1, pos2, reverse, false, out colors, out positions);
                blendTmp.Colors    = colors;
                blendTmp.Positions = positions;
                //
                brushTmp.InterpolationColors = blendTmp;
                brush    = brushTmp;
                brushTmp = null;
            }
            break;

            case BlendStyle.FadeInFadeOut:
            {
                LinearGradientBrush brushTmp = new LinearGradientBrush(rect, Color.Empty, Color.Empty, mode);
                //画刷设置
                ColorBlend blendTmp = new ColorBlend();
                Color[]    colors;
                float[]    positions;
                RenderEngine.GetColorPosFadeInFadeOut(baseColor, pos1, pos2, reverse, false, out colors, out positions);
                blendTmp.Colors    = colors;
                blendTmp.Positions = positions;
                //
                brushTmp.InterpolationColors = blendTmp;
                brush    = brushTmp;
                brushTmp = null;
            }
            break;

            default:
                break;
            }
            return(brush);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 创建画刷,渲染线段使用
        /// </summary>
        /// <param name="pt1">起点</param>
        /// <param name="pt2">终点</param>
        /// <param name="baseColor">基色</param>
        /// <param name="style">样式</param>
        /// <returns>画刷</returns>
        public static Brush CreateBrush(Point pt1, Point pt2, Color baseColor, BlendStyle style)
        {
            Brush brush = null;

            switch (style)
            {
            case BlendStyle.Solid:
            {
                SolidBrush brushTmp = new SolidBrush(baseColor);
                brush    = brushTmp;
                brushTmp = null;
            }
            break;

            case BlendStyle.Gradient:
            {
                LinearGradientBrush brushTmp = new LinearGradientBrush(GetLineRect(pt1, pt2), Color.Empty, Color.Empty, GetLineDegrees(pt1, pt2));
                //画刷设置
                ColorBlend blendTmp = new ColorBlend();
                Color[]    colors;
                float[]    positions;
                RenderEngine.GetColorPosGradient(baseColor, float.NaN, float.NaN, false, true, out colors, out positions);
                blendTmp.Colors    = colors;
                blendTmp.Positions = positions;
                //
                brushTmp.InterpolationColors = blendTmp;
                brush    = brushTmp;
                brushTmp = null;
            }
            break;

            case BlendStyle.FadeIn:
            {
                LinearGradientBrush brushTmp = new LinearGradientBrush(GetLineRect(pt1, pt2), Color.Empty, Color.Empty, GetLineDegrees(pt1, pt2));
                //画刷设置
                ColorBlend blendTmp = new ColorBlend();
                Color[]    colors;
                float[]    positions;
                RenderEngine.GetColorPosFadeIn(baseColor, float.NaN, float.NaN, false, true, out colors, out positions);
                blendTmp.Colors    = colors;
                blendTmp.Positions = positions;
                //
                brushTmp.InterpolationColors = blendTmp;
                brush    = brushTmp;
                brushTmp = null;
            }
            break;

            case BlendStyle.FadeOut:
            {
                LinearGradientBrush brushTmp = new LinearGradientBrush(GetLineRect(pt1, pt2), Color.Empty, Color.Empty, GetLineDegrees(pt1, pt2));
                //画刷设置
                ColorBlend blendTmp = new ColorBlend();
                Color[]    colors;
                float[]    positions;
                RenderEngine.GetColorPosFadeOut(baseColor, float.NaN, float.NaN, false, true, out colors, out positions);
                blendTmp.Colors    = colors;
                blendTmp.Positions = positions;
                //
                brushTmp.InterpolationColors = blendTmp;
                brush    = brushTmp;
                brushTmp = null;
            }
            break;

            case BlendStyle.FadeInFadeOut:
            {
                LinearGradientBrush brushTmp = new LinearGradientBrush(GetLineRect(pt1, pt2), Color.Empty, Color.Empty, GetLineDegrees(pt1, pt2));
                //画刷设置
                ColorBlend blendTmp = new ColorBlend();
                Color[]    colors;
                float[]    positions;
                RenderEngine.GetColorPosFadeInFadeOut(baseColor, float.NaN, float.NaN, false, true, out colors, out positions);
                blendTmp.Colors    = colors;
                blendTmp.Positions = positions;
                //
                brushTmp.InterpolationColors = blendTmp;
                brush    = brushTmp;
                brushTmp = null;
            }
            break;

            default:
                break;
            }
            return(brush);
        }