C# winform 界面美化技巧(扁平化设计)

关于C#界面美化的一些小技巧
在不使用第三方控件如 IrisSkin 的前提下,依然可以对winform做出让人眼前一亮的美化

首先,我们先来实现主界面的扁平化

此处分为两个步骤,第一步是更改winform自带的MainForm窗体属性,第二步是添加窗体事件。
将主窗体FormBorderStyle更改为None,这样就得到了一个无边框的窗体(winform自带边框太丑。。)
调节背景色,建议找到自己喜欢的颜色,然后使用取色器(我用的是按键精灵自带的取色板)取得想要的RGB参数,输入到BackColor属性之中
在主窗体的Mouse_Down中添加如下事件,实现窗体随意拖动:

[DllImport("user32.dll")]
public static extern bool ReleaseCapture();
[DllImport("user32.dll")]
[DllImport("user32.dll")]
public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
public const int WM_SYSCOMMAND = 0x0112;
public const int SC_MOVE = 0xF010;
public const int HTCAPTION = 0x0002;
/// <summary>
/// 为了是主界面能够移动
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void MainForm_MouseDown(object sender, MouseEventArgs e)
{ReleaseCapture();SendMessage(this.Handle, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0);
}

添加最小化、退出事件的按钮,背景色BackColor和字体色Forecolor设置为与界面颜色较为搭配的,将按钮的FlatStyle设置为Popup,它会自己随着界面风格调整哦~~最小化和退出的代码如下:

this.WindowState = FormWindowState.Minimized;
this.Close();

到此为止主窗体的美化以及基本功能实现完毕
窗体基本控件实现美化

tabcontrol美化
  通过tabcontrol的drawitem事件,来达到改变tabpage字体、字体颜色以及背景色的目的

private void tabControl1_DrawItem(object sender, DrawItemEventArgs e){SolidBrush back = new SolidBrush(Color.FromArgb(45, 45, 48));SolidBrush white = new SolidBrush(Color.FromArgb(122, 193, 255));Rectangle rec = tabControl1.GetTabRect(0);e.Graphics.FillRectangle(back, rec);Rectangle rec1 = tabControl1.GetTabRect(1);e.Graphics.FillRectangle(back, rec1);StringFormat sf = new StringFormat();sf.Alignment = StringAlignment.Center;for (int i = 0; i < tabControl1.TabPages.Count; i++){Rectangle rec2 = tabControl1.GetTabRect(i);e.Graphics.DrawString(tabControl1.TabPages[i].Text, new Font("微软雅黑", 9), white, rec2, sf);}}

DataGridview美化
通过设置ColumnHeadersDefaultCellStyle,来改变列标题的背景、字体和颜色
通过设置DefaultCellStyle,来改变单元格背景、字体和颜色
通过设置RowHeadersDefaultCellStyle,来改变行标题的背景、字体和颜色

ProgressBar美化
  很多人反映winform的进度条设置BackColor和ForeColor属性,不会产生效果,进度条颜色不会变。因为进度条ProgressBar由于是虚拟模式下运行的,所以调整BackColor和ForeColor都不会产生效果,它仍然会根据windows的主题来更改,为了使其按照我们想要的颜色来显示,我们可以将虚拟模式的命令去掉,在program.cs中,注释掉如下内容:

using System;
using System.Windows.Forms;namespace 界面美化
{static class Program{[STAThread]static void Main(){//Application.EnableVisualStyles();//此行为允许虚拟模式运行的命令,我们把它注释掉Application.SetCompatibleTextRenderingDefault(false);Application.Run(new Form1());}}
}

但是这样的话会导致其他控件形状或者风格发生一些改变,个人不推荐上述方案,更加推荐通过重写ProgressBar的OnePaint方法来改变它的颜色(前景色和背景色)。在此我们有如下代码

using System.Windows.Forms;
using System.Drawing;namespace 界面美化
{class MyProgressBar:ProgressBar //新建一个MyProgressBar类,它继承了ProgressBar的所有属性与方法{public MyProgressBar(){base.SetStyle(ControlStyles.UserPaint, true);//使控件可由用户自由重绘}protected override void OnPaint(PaintEventArgs e){SolidBrush brush = null;Rectangle bounds = new Rectangle(0, 0, base.Width, base.Height);e.Graphics.FillRectangle(new SolidBrush(this.BackColor), 1, 1, bounds.Width - 2, bounds.Height - 2);//此处完成背景重绘,并且按照属性中的BackColor设置背景色bounds.Height -= 4;bounds.Width = ((int)(bounds.Width * (((double)base.Value) / ((double)base.Maximum)))) - 4;//是的进度条跟着ProgressBar.Value值变化brush = new SolidBrush(this.ForeColor);e.Graphics.FillRectangle(brush, 2, 2, bounds.Width, bounds.Height);//此处完成前景重绘,依旧按照Progressbar的属性设置前景色}}
}

完成以上步骤之后,我们如何在界面中插入自己的进度条呢?``我们可以先插入一个winform自带的ProgressBar,调整好位置,ForeColor,BackColor属性,然后进入窗体的Designer程序中做如下修改:

//private System.Windows.Forms.ProgressBar progressBar1;//注释此句
private MyProgressBar progressBar1; //新添此句,添加新的控件MyProgressBar
private void InitializeComponent()
{//this.progressBar1 = new System.Windows.Forms.ProgressBar();//注释此句this.progressBar1 = new 界面美化.MyProgressBar();//新添此句,此处对MyPorgressBar实例化this.SuspendLayout();this.progressBar1.Location = new System.Drawing.Point(137, 68);this.progressBar1.Name = "progressBar1";this.progressBar1.Size = new System.Drawing.Size(100, 23);this.progressBar1.TabIndex = 0;
}

完成之后就可以啦,看看最后的效果:

  理解控件重绘或者是重写的含义之后,其他的控件也非常方便拓展与修改,达到美化效果!

C# winform 界面美化技巧(扁平化设计)相关推荐

  1. 实例讲解扁平化设计的步骤和要点

    自从苹果放弃拟物化设计,采用扁平化设计以来,扁平化设计的龙卷风就全面席卷了整个UI设计界,自此之后,无论是网页还是APP的设计,首要考虑的就是采用扁平化的设计.扁平化的设计似乎成为了有别于拟物化设计的 ...

  2. 【pmcaff】重磅干货,必读的扁平化设计技巧

    点击上方 "公众号" 可以订阅哦! 编者:火了一年的扁平化,同学们都了解清楚了吗?今天@网秦UEC 的同学从国外译过来一篇好文,从扁平化的流行缘由聊到对界面设计的影响,附有一些设计 ...

  3. 15套流行的扁平化设计的界面素材【免费下载】

    用户界面工具包非常受追捧.他们能够帮助更好的完成正在进行的项目,减少时间和精力.界面是用户在浏览网站时注意到的第一件事.这就是为什么好的用户界面很重要,尤其是那些可以免费下载的素材. 今天,我们很高兴 ...

  4. 扁平化设计学习之二 设计原则

    扁平化设计原则 13-06-08 oooceo 没有评论 设计美化 1604 浏览 设计社区不停讨论关于扁平风格. 这种风格很带感.但大多数设计师不能彰显这种风格,或者直接讨厌这种风格. 我很现实,创 ...

  5. 【平面设计】扁平化设计(Ⅲ)——原则

    [导读]关于扁平化设计是一个大的门类,通过前面两期的分享,我们已经知道了其概念和技巧的内容,今天我们继续与大家一同分享它的原则. 拒绝特效 顾名思义,扁平化设计仅仅采用二维元素.所有元素都不加修饰-- ...

  6. 腾讯CDC谈扁平化设计

    扁平化设计无疑是当前讨论最多,最火的设计形式,自ios7面世以来更是将扁平化设计的讨论推向风口浪尖. 在这里我不想分析拟物设计和扁平化设计的优劣,更不想说谁更好!在形式服从内容的今天,我只能说哪种设计 ...

  7. 做好扁平化设计-视觉篇

    原文链接 出自Tencent CDC Blog 扁平化设计无疑是当前讨论最多,最火的设计形式,自ios7面世以来更是将扁平化设计的讨论推向风口浪尖. 在这里我不想分析拟物设计和扁平化设计的优劣,更不想 ...

  8. (10.1.3.1)做好扁平化设计-视觉篇

    [编者按]去年,iOS 7的发布让更多的用户欣赏到了扁平化设计之美,更在业内掀起了一股扁平化设计潮流.扁平风格的一个优势在于它可以更加简单直接的将信息和事物的工作方式展示出来,减少认知障碍的产生.其简 ...

  9. ai怎么切图制作html,APP扁平化设计最强AI切图工具推荐与AI切图教程

    目前很多APP设计师使用了AI软件来进行一些扁平化的设计,包括设计APP界面设计.APP引导页界面设计.APP图标设计等等.但是在AI里面切图是非常的不方便.于是,为了解决大家这个烦恼. AI设计师的 ...

  10. 别让扁平化设计平淡无奇

    早在2013年iOS7发布以来,扁平化设计就轰动了互联网世界.从那以后,它就持续发扬光大,并且发展出数量惊人的变种. 随着带有扁平化色彩的Google Material design规范的推出.卡片式 ...

最新文章

  1. linux 虚拟环境
  2. wait跟sleep的区别
  3. [BZOJ 2756] 奇怪的游戏
  4. Nginx重定向到子目录问题
  5. ecshop“发货查询”中加入收货人、收货地址、发货时间、配送方式
  6. Apache Flink 零基础入门(十一)Flink transformation
  7. 过滤XML数据中的非主流特殊字符
  8. jenkins 运行 shell脚本报错,Failed to restart tomcat.service: Interactive authentication required
  9. web前端基础(13js语法基础)
  10. 零基础入门语义分割-Task4 评价函数与损失函数
  11. 学校题库管理系统需求分析
  12. 2.6 数值分析: 追赶法
  13. PHP货币转中文大写函数
  14. 50 道网络面试题及答案
  15. C++基础笔记——汇总版(上)
  16. 解决SQL server中提示对象名无效
  17. linux文件空洞与稀疏文件,Linux文件空洞与稀疏文件
  18. 基于WiFi的CSI数据做呼吸频率检测-python版(含代码和数据)
  19. 入门级理财书-小狗钱钱-读书笔记
  20. python考试搜题神器_智慧职教云课堂2020Python程序设计答案搜题公众号

热门文章

  1. Git使用:拉取最新代码、提交本地代码到远程仓库冲突
  2. 更新git 分支代码到最新
  3. css 背景图片虚化
  4. Intel CPU的型号漫谈
  5. SQL排序(升序,降序)
  6. bi 工具 市场排行榜_国产移动BI工具排名
  7. 大学计算机实践教程raptor,大学计算机实践教程.docx
  8. redis 实践笔记和源码分析
  9. cf1668E. Half Queen Cover 思维
  10. 编程题涉及到的数学公式(持续更新……)