近期时间比较充裕,能够有大把时间泡在实验室里,因此想用c#做个项目,便从这里开始,贴出一些不明白但现在理解了的东西,帮助自己理解,也同时分享出来。
闲话不多说,从窗体开始,设计。
第一个问题,总觉得win10标题栏没有win7好看,那么窗体透明到底如何设计?
现有两种方法,各有不同。
第一种:在form_load函数里,使用this.Opacity,值可以从0到1不等,比如this.Opacity = 0.5,则设置窗体为半透明。
第二种:先设置窗体为一个几乎不会使用到的颜色比如大红色,即this.BackColor = red,然后再设置this.TransparencyKey = Color.red,就可以让它透明。
两种方式的其他区别自行百度,我在win10运行环境下区别不大,但是有一点,如果使用的是第二种方法即TransparencyKey的话,如果设置了背景图片,那么将失去效果。而且Opacity对标题栏有效,而第二种方法没有。
第二个问题,一个好看的窗体,肯定是需要背景图片的衬托的,但是如果加上背景图片后,你放个控件上去试试,控件的背景色和背景颜色交相辉映,简直毁三观,这样如何处理呢?
遇到这种情况,第一反应就是设置Opacity呗,这么简单的事,于是我就在lebel1控件的Paint事件里写了
this.Opacity = 0.5;
当然犯了个很愚蠢的问题,窗体变透明了。于是我又改了,写成
label1.Opacity = 0.5;
这都出语法错误了。经过一番严肃地思(bai)考(du),我发现了一个新的方法。Opaity对于单个控件来说是无效的,但是,有另外一种神奇的方法可以解决。
this.label1.BackColor = System.Drawing.Color.Transparent;
设置控件的背景颜色和父窗体背景相同,从此再也不嫌弃自家控件丑了。
第三个问题,背景图片调好了,控件也不难看了,窗体也能透明化了,但是那个难看的边框和标题栏还在,这又是个麻烦的问题。
再次经过一阵“思考”,其实这个同样很简单。只需一段代码
this.FormBorderStyle = FormBorderStyle.None
解决掉了边框和标题栏,一脸懵逼地发现没有放大缩小关闭窗体的按钮了,当然这个很容易实现但是,标题栏大概得要自己重新写一个了。
想知后事如何,等我搞清楚了再写。
PS:
StartPosition的CenterParent和CenterScreen感觉没什么用啊,只开一个窗体,没一个停在屏幕中间的。
自己写的话,窗体最大化不要,这样方便控制一点。
模仿金山毒霸的首页,平时使用感觉效果一般,但是自己模仿起来才发现好高大上,动态效果且不说,单单标题栏的制作,似乎就比较困难了,难道要自己绘制。。。