首 页IT知识库收藏内容
当前位置:翔宇亭IT乐园IT知识库C#窗体界面

详解使用C#制作不规则窗体的方法

减小字体 增大字体 作者:本站  来源:本站原创  发布时间:2010-08-14 13:40:00

5、为窗体的Load事件编写程序

双击窗体,程序默认是为窗体的Load事件添加处理程序,然后在光标处书写下面的代码:

            BitmapRegion BitmapRegion = new BitmapRegion();//此为生成不规则窗体和控件的类
            BitmapRegion.CreateControlRegion(this, new Bitmap("xyt.bmp"));

6、使窗体能够最大化、最小化和关闭

在程序相应位置添加三个按钮控件,主要是为了实现最大化、最小化和关闭功能,并且将三个按钮的文本分别设置为“口,—,X”,或者自己使用比较漂亮的图片按钮会更好,如果你借用按钮的鼠标滑过、按下、放下等事件实现更高级的效果那会更炫。

(1)双击最大化按钮,程序自动添加按钮的单击事件处理程序,编写代码如下:

            if (this.WindowState == FormWindowState.Maximized)//如果已经最大化
                this.WindowState = FormWindowState.Normal;//窗口正常大小
            else
                this.WindowState = FormWindowState.Maximized; //窗口最大化

(2)用同样的方法为最小化按钮添加如下程序代码:

this.WindowState = FormWindowState.Minimized;//窗口最小化

(3)用同样的方法为关闭按钮添加如下程序代码:

this.Close();

7、实现窗体的拖拽功能

首先为该窗体添加两个成员变量:双击窗体界面,找到如下代码:

        public Form1()
        {
            InitializeComponent();
        }

在该代码前添加如下两个变量成员:

        private Point mouseOffset;        //记录鼠标指针的坐标
        private bool isMouseDown = false; //记录鼠标按键是否按下

回到设计界面,在右侧属性窗口中找到事件图标(类似闪电的图标),单击该按钮,转换到窗体的事件界面,接下来为其添加相关事件处理程序。

(1)找到MouseDown事件,双击该事件,在光标处添加如下代码:

            int xOffset;
            int yOffset;
            if (e.Button == MouseButtons.Left)
            {
                xOffset = -e.X - SystemInformation.FrameBorderSize.Width;
                yOffset = -e.Y - SystemInformation.CaptionHeight - SystemInformation.FrameBorderSize.Height;
                mouseOffset = new Point(xOffset, yOffset);
                isMouseDown = true;
            }

(2)找到MouseMove事件,双击该事件后,为其添加如下代码:

            if (isMouseDown)
            {
                Point mousePos = Control.MousePosition;
                mousePos.Offset(mouseOffset.X, mouseOffset.Y);
                Location = mousePos;
            }

(3)找到MouseUp事件,双击该事件后为其添加如下代码:

            // 修改鼠标状态isMouseDown的值
            // 确保只有鼠标左键按下并移动时,才移动窗体

            if (e.Button == MouseButtons.Left)
            {
                isMouseDown = false;
            }

8、程序运行效果

按下F5键就可以看一下程序的运行效果了,本例的运行效果如下所示:

9、本方法的优劣势

使用此方法制作的不规则窗体,相对API来说编写的代码较少,对于复杂的不规则窗体来说较好,但是执行效率较低,应为程序运行起来后,他调用BitmapRegion类的相关方法把你设置的底色一点点的去掉,因此速度相对较慢,如果机器运行较慢的话,会看到这个过程。

10、说明

本文在撰写过程中参考了网上的相关内容,在此表示感谢。

本例源代码下载:点击下载此文件

本文源自:翔宇亭——IT乐园(http://www.biye5u.com),转载请保留此信息!

上一页  [1] [2] [3] 

微信搜索“优雅的代码”关注本站的公众号,或直接使用微信扫描下面二维码关注本站公众号,以获取最新内容。

个人成长离不开各位的关注,你的关注就是我继续前行的动力。

知识评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 6 条,得分 570 分,平均 95 分) 查看完整评论
[回复] 611   打分:100分  发表时间:2011-11-21
· good
[回复] 5Oldtiger   打分:100分  发表时间:2010-10-27
· 刚刚测试,在2008下可以运行,效果也还不错,只是除了速度慢之外,边界也比较粗糙,有些地方好像未能完全透明
[回复] 4admin   打分:100分  发表时间:2010-08-20
· 回复 2 楼(wenwen):给出的是VS2005中的例子,所以在2003下无法运行,你要做适当转换修改。
[回复] 3常州议事   打分:85分  发表时间:2010-08-18
· 运行速度有点慢
[回复] 2wenwen   打分:85分  发表时间:2010-08-17
· 你给的那个源代码好像有点问题,在2003中无法运行啊
[回复] 1bucuo   打分:100分  发表时间:2010-08-16
· 哈哈,创建的那个类的问题终于知道了,
比网上的要详细,谢谢啦。
愿您的精彩评论引起共鸣,带来思考和价值。
用户名: 查看更多评论
分 值:100分 90分 80分 70分 60分 40分 20分
内 容:
验证码:
关于本站 | 网站帮助 | 广告合作 | 网站声明 | 友情连接 | 网站地图
本站部分内容来自互联网,如有侵权,请来信告之,谢谢!
Copyright © 2007-2024 biye5u.com. All Rights Reserved.