以在作的项目为例,记录一下界面美化过程当中遇到的问题,因为项目是先作出来以后,又请美工进行稍微调整设计界面,因此会又些限制html
1. TabControl的问题----在添加了背景图片后,TabControl的标签不能添加背景图片,背景不能够设置。ide
针对这个问题,网上有两种解决方法:参考:https://blog.csdn.net/sinat_29136193/article/details/80652443布局
a) 重绘TabControl----设置DrawMode属性为OwnerDrawFixed,而后添加事件DrawItem,可是对于性能方面不知是否影响大。在重绘了标签和背景后,又对Page背景为与总背景一直进行设置,可是,下面的重写控件能够设置为透明度,直接,省去一些麻烦。性能
b) 重写方法虽然能够用,在界面Designer.cs中修改this.TabControl=new TabControlEx();调用成功,可是在x64位编译后,不能直接拖控件到界面上,不知是何缘由。测试
可是重写方法能够启用TControl透明等各类,可是在设置了页面透明后,最后发现页面加载控件比较卡,未设置透明的页面不卡。不知具体缘由this
2. GroupBox边框问题----在项目中,本来使用GroupBox进行排版,如今美化界面设置背景图片后,GroupBox又很明显的边框,看起来不太好看。spa
解决历程:首先找去边框方法,网上提供方法重写方法OnPaint().net
private void groupBox10_Paint(object sender, PaintEventArgs e) { e.Graphics.Clear(this.BackColor); }
测试以后,发现,GroupBox直接连背景图片都变成白色的了,果断放弃;以后采用Panel替换GroupBox,设置背景图片,不存在任何边框问题。设计
3. 最主要的问题是在总体都布局设置好以后,运行程序发现卡的要命。网上查找资料总结参考:https://www.cnblogs.com/kest/p/4683012.html。code
CreateParams重载以后,页面是等待全部控件都彻底加载好以后,啪的一下全出来,其中有一个等待过程,后面经分析,是TabControl页面设置透明致使等待时间过长。最后决定再也不使用TabControl,直接添加按钮跳转页面,也不至于有这么多问题。
4. 在解决问题过程当中,重写Panel控件,将界面中全部Panel换成重写的Panel,代码以下,第一天测的时候,因为控件加载比较慢,因此看到了控件加载的过程,背景图片是加了一层又一层,特别混乱,例如,Label本没有背景图,却显示其余控件的图片做为背景,很乱,因此没有采用这样的改善方法。可是,等到最后,我又从新仍是同样的用重写的Panel时,倒是好好的,奇怪了,不懂为何。
1 public class PanelEx : Panel 2 { 3 public PanelEx() 4 { 5 this.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint, true); 6 this.UpdateStyles(); 7 } 8 protected override void OnPaint(PaintEventArgs e) 9 { 10 // 使用双缓冲 11 this.DoubleBuffered = true; 12 // 背景重绘移动到此 13 if (this.BackgroundImage != null) 14 { 15 e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; 16 e.Graphics.DrawImage( 17 this.BackgroundImage, 18 new System.Drawing.Rectangle(0, 0, this.Width, this.Height), 19 0, 20 0, this.BackgroundImage.Width, this.BackgroundImage.Height, System.Drawing.GraphicsUnit.Pixel); 21 } 22 base.OnPaint(e); 23 //this.BackgroundImage = null; 24 } 25 }