zoukankan      html  css  js  c++  java
  • winform学习之----重新绘制边框方法延伸

    方法1、

        Pen pen1 = new Pen(Color.FromArgb(233, 149, 87));
               e.Graphics.DrawRectangle(pen1, new Rectangle(0, 0, this.Width - 1, this.Height - 1));
    方法2、

        Rectangle myRectangle = new Rectangle(0, 0, this.Width, this.Height);
               ControlPaint.DrawBorder(e.Graphics, myRectangle,
                    Color.FromArgb(0, 0, 0), 2, ButtonBorderStyle.Solid,
                    Color.FromArgb(0, 0, 0), 2, ButtonBorderStyle.Solid,
                    Color.FromArgb(0, 0, 0), 2, ButtonBorderStyle.Solid,
                    Color.FromArgb(0, 0, 0), 2, ButtonBorderStyle.Solid
                );

    对比:

    一、Winform Panel边框方法一:每边能设置不同的颜色、宽度和样式

      1、拖一个 Panel控件到主窗体中,保持默认名称 panel1,BorderStyle 选择 Fixed3D。

      2、双击 Panel1,打开后台代码文件,在 panel1_Paint(object sender, PaintEventArgs e) 方法中添加如下代码:

      private void panel1_Paint(object sender, PaintEventArgs e)
      {
        ControlPaint.DrawBorder(e.Graphics, panel1.ClientRectangle,
         Color.White, 1, ButtonBorderStyle.Solid, //左边
         Color.White, 1, ButtonBorderStyle.Solid, //上边
         Color.DimGray, 1, ButtonBorderStyle.Solid, //右边
         Color.DimGray, 1, ButtonBorderStyle.Solid);//底边
      }

      每边共有三个参数,分别为:边框颜色、宽度和样式;如果把 1 改为 0,则覆盖原来的边框,否则颜色搭配得当将出现凹凸边框效果,示例运行效果如图1所示:

    C# Winform边框(ControlPaint.DrawBorder)

    图1

      如果 BorderStyle 选择 None,则又是另外一种效果(边框内突起)。

     

     

      二、Winform Panel边框方法二:每边样式一样

      步骤跟方法一一样,只是在 panel1_Paint(object sender, PaintEventArgs e) 方法中添加如下代码:

      private void panel1_Paint(object sender, PaintEventArgs e)
      {
         ControlPaint.DrawBorder(e.Graphics, ClientRectangle, Color.Ivory, ButtonBorderStyle.Solid);
      }

      每边都设置为同一风格,即相同的颜色、宽度和样式。

    三、推荐重绘边框的方法

    private void panelAll_Paint(object sender, PaintEventArgs e)
            {
                Rectangle myRectangle = new Rectangle(0, 0, this.panelAll.Width, this.panelAll.Height);
                ControlPaint.DrawBorder(e.Graphics, myRectangle,
                    System.Drawing.Color.FromArgb(((int)(((byte)(245)))), ((int)(((byte)(145)))), ((int)(((byte)(28))))), 2, ButtonBorderStyle.Solid,
                    System.Drawing.Color.FromArgb(((int)(((byte)(245)))), ((int)(((byte)(145)))), ((int)(((byte)(28))))), 2, ButtonBorderStyle.Solid,
                    System.Drawing.Color.FromArgb(((int)(((byte)(245)))), ((int)(((byte)(145)))), ((int)(((byte)(28))))), 2, ButtonBorderStyle.Solid,
                    System.Drawing.Color.FromArgb(((int)(((byte)(245)))), ((int)(((byte)(145)))), ((int)(((byte)(28))))), 2, ButtonBorderStyle.Solid
                );
            }此方法可以避免一些重绘时发生的错误。

  • 相关阅读:
    bash帮助文档简单学习;bash手册翻译
    jmeter的master、slave模型启动方法
    如何查看pip安装包的所有版本;以及ipython的安装
    简单过下bash/sh脚本基本知识吧
    Celery 启动报错 can_read() got an unexpected keyword argument timeout
    paramiko执行命令超时的问题
    远程的jmeter自动执行完,如何回调通知被调用者“结束”状态
    记录一下:关于mysql数据误删除恢复的问题
    数据库Sharding的基本思想和切分策略
    数据库分库分表(sharding)系列(一) 拆分实施策略和示例演示
  • 原文地址:https://www.cnblogs.com/candyzhmm/p/5552523.html
Copyright © 2011-2022 走看看