zoukankan      html  css  js  c++  java
  • 实战——一、c#窗体(1)

    近期时间比较充裕,能够有大把时间泡在实验室里,因此想用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感觉没什么用啊,只开一个窗体,没一个停在屏幕中间的。
    自己写的话,窗体最大化不要,这样方便控制一点。
    模仿金山毒霸的首页,平时使用感觉效果一般,但是自己模仿起来才发现好高大上,动态效果且不说,单单标题栏的制作,似乎就比较困难了,难道要自己绘制。。。

  • 相关阅读:
    超详细mysql left join,right join,inner join用法分析
    sql FOR XML PATH
    sql server 使用for xml path 将1列多行转换为字符串连接起来,俗称 sql 合并字符
    菜鸟疑问之新建网站与新建web应用程序区别
    asp.net常用函数表
    屌丝逆袭--Asp.net快速入门学习教程 第1晚
    MongoDB学习记录(一)
    Git的SSH-key生成、导入及使用
    atom编辑器使用“apm install”无法响应的解决方案
    Knockout.js组件系统的详解之(一)
  • 原文地址:https://www.cnblogs.com/yinyoupoet/p/13287598.html
Copyright © 2011-2022 走看看