• 自定义按钮与颜色和形状


    介绍 这是我第一个c#自定义控件。请下载演示程式并按一下。 特性 用户可以定义: 颜色 边框颜色 正常的颜色 正常颜色B 悬停色一个 悬停色B GradientStyle 水平 垂直 ForwardDiagonal BackwardDiagonal ButtonStyle 矩形 椭圆 SmoothingQuality 没有(脆) 高速 抗锯齿 优质 你可以真正感受到点击与它的扁平风格! OnPaint()中的关键技术 SmoothingModeHide,复制Code

    //
    // set SmoothingMode
    //
    switch (_SmoothingQuality)
    {
        case SmoothingQualities.None:
            e.Graphics.SmoothingMode = SmoothingMode.Default;
            break;
        case SmoothingQualities.HighSpeed:
            e.Graphics.SmoothingMode = SmoothingMode.HighSpeed;
            break;
        case SmoothingQualities.AntiAlias:
            e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
            break;
        case SmoothingQualities.HighQuality:
            e.Graphics.SmoothingMode = SmoothingMode.HighQuality;
            break;
    }

    LinearGradientModeHide,Code

    //
    // mode declaration
    //
    LinearGradientMode mode;

    Hide副本,复制Code

    //
    // set LinearGradientMode
    //
    switch (_GradientStyle)
    {
        case GradientStyles.Horizontal:
            mode = LinearGradientMode.Horizontal;
            break;
        case GradientStyles.Vertical:
            mode = LinearGradientMode.Vertical;
            break;
        case GradientStyles.ForwardDiagonal:
            mode = LinearGradientMode.ForwardDiagonal;
            break;
        case GradientStyles.BackwardDiagonal:
            mode = LinearGradientMode.BackwardDiagonal;
            break;
        default:
            mode = LinearGradientMode.Vertical;
            break;
    }

    LinearGradientBrushHide,Code

    //
    // brush declaration
    //
    LinearGradientBrush brush;

    Hide副本,收缩,复制Code

    switch (_State)
    {
        case _States.Normal:
            brush = new LinearGradientBrush(newRect, 
                    _NormalColorA, _NormalColorB, mode);
            switch (_ButtonStyle)
            {
                case ButtonStyles.Rectangle:
                    e.Graphics.FillRectangle(brush, newRect);
                    e.Graphics.DrawRectangle(new 
                        Pen(_NormalBorderColor, 1), newRect);
                    break;
                case ButtonStyles.Ellipse:
                    e.Graphics.FillEllipse(brush, newRect);
                    e.Graphics.DrawEllipse(new 
                      Pen(_NormalBorderColor, 1), newRect);
                    break;
    
            }
            e.Graphics.DrawString(this.Text, base.Font, 
               new SolidBrush(base.ForeColor), textX, textY);
            break;
    
        case _States.MouseOver:
            brush = new LinearGradientBrush(newRect, 
                  _HoverColorA, _HoverColorB, mode);
            switch (_ButtonStyle)
            {
                case ButtonStyles.Rectangle:
                    e.Graphics.FillRectangle(brush, newRect);
                    e.Graphics.DrawRectangle(new 
                         Pen(_HoverBorderColor, 1), newRect);
                    break;
                case ButtonStyles.Ellipse:
                    e.Graphics.FillEllipse(brush, newRect);
                    e.Graphics.DrawEllipse(new 
                       Pen(_HoverBorderColor, 1), newRect);
                    break;
    
            }
            e.Graphics.DrawString(this.Text, base.Font, 
              new SolidBrush(base.ForeColor), textX, textY);
            break;
    
        case _States.Clicked:
            brush = new LinearGradientBrush(newRect, 
                  _HoverColorA, _HoverColorB, mode);
            switch (_ButtonStyle)
            {
                case ButtonStyles.Rectangle:
                    e.Graphics.FillRectangle(brush, newRect);
                    e.Graphics.DrawRectangle(new 
                         Pen(_HoverBorderColor, 2), newRect);
                    break;
                case ButtonStyles.Ellipse:
                    e.Graphics.FillEllipse(brush, newRect);
                    e.Graphics.DrawEllipse(new 
                       Pen(_HoverBorderColor, 2), newRect);
                    break;
    
            }
            e.Graphics.DrawString(this.Text, base.Font, 
              new SolidBrush(base.ForeColor), 
              textX + 1, textY + 1);
            break;
    }

    另一个控制项目 ProgressBar颜色。 反馈 请为这篇文章投票。 如果你有,请给我发邮件或留下你的信息: 错误报告 代码的改进 任何意见或建议。 本文转载于:http://www.diyabc.com/frontweb/news457.html

  • 相关阅读:
    linux下实现在程序运行时的函数替换(热补丁)【转】
    进程的切换和系统的一般执行过程【转】
    linux 系统函数之 (dirname, basename)【转】
    PHP的ob_start()函数用法
    JavaScript闭包(Closure)学习笔记
    利用PHP的register_shutdown_function来记录PHP的输出日志,模拟析构函数
    PHP get_class_methods函数用法
    PHP中的魔术方法:__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep, __wakeup, __toString, __set_state, __clone and __autoload
    PHP get_class 返回对象的类名
    利用session_set_save_handler()函数将session保存到MySQL数据库中
  • 原文地址:https://www.cnblogs.com/Dincat/p/13450160.html
Copyright © 2020-2023  润新知