收藏 分享(赏)

第一节 窗体设计.pptx

上传人:kpmy5893 文档编号:8346785 上传时间:2019-06-21 格式:PPTX 页数:42 大小:1.98MB
下载 相关 举报
第一节 窗体设计.pptx_第1页
第1页 / 共42页
第一节 窗体设计.pptx_第2页
第2页 / 共42页
第一节 窗体设计.pptx_第3页
第3页 / 共42页
第一节 窗体设计.pptx_第4页
第4页 / 共42页
第一节 窗体设计.pptx_第5页
第5页 / 共42页
点击查看更多>>
资源描述

1、MiniMusic播放器,注:课件和视频版权归作者所有,未经许可不准上传、传播、商用。,作者:吴鹏,邮箱:,电话:18575562535,正版视频: http:/ 朋友,带来帮助!,介绍:,第一节 窗体设计,1.无边框窗体 2.无边框窗体拖动 3.无边框阴影效果 4.自定义最小化按钮、最大化按钮 5.窗体换皮肤 6.窗体透明度调节 7.鼠标停留提示功能 8.窗体淡入淡出效果,1,1.无边框窗体,1.点击窗体: 属性-外观-FormBorderStyle : None 2.设置任务栏图标 属性-窗口样式-Icon 3.背景图片 属性-外观-BackgroundImage 4.背景图拉伸填充 属性

2、-外观-BackgroundImageLayout:stretch,效果图:,2.无边框窗体拖动,1.调用系统API函数首先引入:using System.Runtime.InteropServices; 2.调用user32.dll两个库函数1). ReleaseCapture()2). SendMessage(IntPtr hwdn, int wMsg,int mParam,int lParam); 3.在窗体MouseDown中调用两个函数事件-鼠标-MouseDown,代码实现:,#region 无边框拖动public const int WM_NCLBUTTONDOWN = 0xA1

3、;public const int HTCAPTION = 0x02;DllImport(“user32.dll“)public static extern bool ReleaseCapture();DllImport(“user32.dll“)public static extern bool SendMessage(IntPtr hwdn, int wMsg,int mParam,int lParam);private void Form1_MouseDown(object sender, MouseEventArgs e)ReleaseCapture();/向Windows发送拖动信息

4、SendMessage(this.Handle ,WM_NCLBUTTONDOWN,HTCAPTION,0);#endregion,3.窗体阴影效果,1.调用系统API函数首先引入:using System.Runtime.InteropServices; 2.调用user32.dll两个库函数1). SetClassLong(IntPtr hwnd, int nIndex, int dwNewLong);2). GetClassLong(IntPtr hwnd, int nIndex); 3.在窗体初始化函数InitializeComponent()后调用 SetClassLong(this

5、.Handle, GCL_STYLE, GetClassLong(this.Handle, GCL_STYLE) | CS_DropSHADOW);,代码实现:,#region 窗体阴影效果const int CS_DropSHADOW = 0x20000;const int GCL_STYLE = (-26);/声明Win32 APIDllImport(“user32.dll“)public static extern int SetClassLong(IntPtr hwnd, int nIndex, int dwNewLong);DllImport(“user32.dll“)public

6、static extern int GetClassLong(IntPtr hwnd, int nIndex);#endregion public Form1()InitializeComponent();/API函数加载,实现窗体边框阴影效果SetClassLong(this.Handle, GCL_STYLE, GetClassLong(this.Handle, GCL_STYLE) | CS_DropSHADOW); ,效果图:,4.自定义关闭,最小化按钮,1.拖入两个Label : 2.响应Label的:事件-操作-Click事件-鼠标-MouseLeave事件-鼠标-MouseMov

7、e 3.设置属性的:属性-外观-ForeColor : While属性-外观-BackColor : Transparent属性-外观-Name : Closes,代码实现:,#region 关闭按钮实现private void Close_Click(object sender, EventArgs e)Application.Exit();private void Close_MouseLeave(object sender, EventArgs e)Closes.ForeColor = Color.White;private void Close_MouseMove(object sen

8、der, MouseEventArgs e)Closes.ForeColor = Color.Black;#endregion,效果图:,用同样的方法实现最小化,皮肤按钮,1.拖入两个Label : 2.响应Label的:事件-操作-Click事件-鼠标-MouseLeave事件-鼠标-MouseMove 3.设置属性的:属性-外观-ForeColor : While属性-外观-BackColor : Transparent属性-外观-Name :Skin 、Small,Skin代码实现:,#region 关闭按钮实现 private void Skin_MouseLeave(object s

9、ender, EventArgs e)Skin.ForeColor = Color.White;private void Skin_MouseMove(object sender, MouseEventArgs e)Skin.ForeColor = Color.Black;#endregion,Small代码实现:,#region 关闭按钮实现private void Small_Click(object sender, EventArgs e)this.WindowState = FormWindowState.Minimized;private void Small_MouseLeave(

10、object sender, EventArgs e)Small.ForeColor = Color.White;private void Small_MouseMove(object sender, MouseEventArgs e)Small.ForeColor = Color.Black; #endregion,效果图:,5.窗体换肤,1.拖入1个panel、6个picturebox: 2.响应Skin的:事件-操作-Click 3.设置panel属性的:属性-外观-BackColor : Transparent属性-设计-Name : pskin属性-行为-Visible : Fals

11、e 3.设置6个pictureboxd属性的:属性-外观-BackColor : Transparent属性-外观-BorderStyle : FixedSingle属性-外观-Image : 属性-行为-SizeMode : StretchImage,Skin Click代码实现:,#region 关闭按钮实现 private void Skin_Click(object sender, EventArgs e)if (skins = false)pskin.Visible = true;/pskin为panel的Name pskin可见skins = true;elsepskin.Visi

12、ble = false;/pskin不可见skins = false; #endregion,设计效果图:,运行效果图:,5.窗体系统换肤功能实现,1.换肤实际就是将自定义图片赋给窗体的:属性-外观-BackgroundImage 2.响应pskin中前5个picturebox的click事件:事件-操作-Click 3.资源中在代码中调用:Properties.Resources.XXX 4.picturebox6 自定义图片载入 后面介绍。,Picturebox1 ,picturebox2(3、4、5相同)代码实现:,#region 关闭按钮实现private void pictureBo

13、x1_Click(object sender, EventArgs e)this.BackgroundImage = Properties.Resources._0; private void pictureBox2_Click(object sender, EventArgs e)this.BackgroundImage = Properties.Resources._4; #endregion,系统皮肤效果图:,窗体自定义图片换肤功能实现,1.响应pskin中第6个picturebox的click事件:事件-操作-Click 2.创建文件夹需引入:using System.IO; 3.以文

14、件格式载入图片:Image.FromFile(string path) 3.实现原理:1).创建Background文件夹保存自定义皮肤图片2).弹出文件选择对话框 OpenFileDialog3).将选中图片拷贝到Background文件夹4).载入图片赋值给窗体BackgroundImage属性,自定义图片换肤代码实现1:,private void pictureBox6_Click(object sender, EventArgs e)if (Directory.Exists(“.Background“) = false)/不存在Background文件夹Directory.Create

15、Directory(“.Background“);OpenFileDialog of1 = new OpenFileDialog();of1.InitialDirectory = “C:“;of1.Filter = “png|*.png|jpg|*.jpg|bmp|*.bmp“;of1.RestoreDirectory = true;of1.FilterIndex = 1;if (of1.ShowDialog() = DialogResult.OK)picfile = of1.FileName;picName = of1.SafeFileName;tryFile.Copy(picfile, s

16、tring.Format(“Background0“, picName);catch (Exception) this.BackgroundImage = Image.FromFile(string.Format(“Background0“, picName);,自定义图片换肤代码实现2:,elseOpenFileDialog of = new OpenFileDialog();of.InitialDirectory = “c:“;of.Filter = “png|*.png|jpg|*.jpg|bmp|*.bmp“;of.RestoreDirectory = true;of.FilterIn

17、dex = 1;if (of.ShowDialog() = DialogResult.OK)picfile = of.FileName;picName = of.SafeFileName;tryFile.Copy(picfile, string.Format(“Background0“, picName);catch (Exception) this.BackgroundImage = Image.FromFile(string.Format(“Background0“ ,picName);,自定义皮肤效果图:,6.窗体透明度调节,受不了自带滑动条呆板的样子这里我们将自定义一个进度条 原理:进

18、度条由两个panel空间,一个当做容器panel1,一个当做可变填充块panel2。响应两个panel的鼠标按下事件,获取点击x坐标。根据x大小设定panel2大小达到滑块的效果。 两个panel的click都要响应,虽然panel2在panel1内,但鼠标点击panel1时panel2的点击事件是不响应的 当鼠标进入控件改变鼠标样式为“手势”,Panel1 背景色设为透明,panel2背景设为白色:属性-外观-ForeColor : Transparent / White 6. 响应消息:1).事件-鼠标-MouseDown2).事件-鼠标-MouseEnter /鼠标变为手势3).事件-鼠

19、标-MouseLeave/鼠标恢复默认 7. 不透明属性Form.Opacity 取值01超过1当做等于1,panel1,panel2,Panel1 : 用作容器容器,接收点击事件。 Panel2 : 用作填充块,接收点击事件、填充panel1。 Panel1 、panel2接收到鼠标点击事件,根据被点击的位置的X坐标来设定Panel2的长度,达到填充的效果。,自定义进度条图解原理,容器panel1代码实现,private void panel1_MouseDown(object sender, MouseEventArgs e)panel2.Size = new Size(e.Locatio

20、n.X, 5);this.Opacity = (double)e.Location.X/100;private void panel1_MouseEnter(object sender, EventArgs e)this.Cursor = System.Windows.Forms.Cursors.Hand;private void panel1_MouseLeave(object sender, EventArgs e)this.Cursor = System.Windows.Forms.Cursors.Default;,容器panel2代码实现,private void panel2_Mou

21、seDown(object sender, MouseEventArgs e)panel2.Size = new Size(e.Location.X, 5);this.Opacity = (double)e.Location.X / 100;private void panel2_MouseEnter(object sender, EventArgs e)this.Cursor = System.Windows.Forms.Cursors.Hand;private void panel2_MouseLeave(object sender, EventArgs e)this.Cursor = S

22、ystem.Windows.Forms.Cursors.Default;,透明度调节效果图:,往窗体拖入一个toolTip 控件属相中将多了一个“杂项” 在需要提示的控件填写要显示的文字:CLOSES控件:属性-杂项-toolTip1上的toolTip : 关闭 其他控件同样。,7.鼠标停留提示功能,停留效果图:,1.连接动态库的AnimateWindow()函数 2.响应主窗体的Load、Closing事件:事件-行为-FormClosing事件-行为-Load 3.在两个事件中调用AnimateWindow()函数就OK了,7.窗体淡入淡出效果,1.原型: AnimateWindow(HW

23、ND hwnd, DWORD dwTime, DWORD dwFlags ) 2.参数说明:hwnd:窗体句柄dwTime:效果事件dwFlags:效果类型,AnimateWindow说明,AW_BLEND = 0x00080000; 褪色效果 AW_CENTER = 0x00000010;瓦解效果 AW_ACTIVATE = 0x00020000;激活窗体效果 AW_HIDE = 0x00010000;退出窗体效果,dwFlags说明,导入AnimateWindow代码实现,#region DllImport(“user32.dll“) protected static extern boo

24、l AnimateWindow(IntPtr hWnd, int dwTime, int dwFlags); public const Int32 AW_BLEND = 0x00080000; public const Int32 AW_CENTER = 0x00000010; public const Int32 AW_ACTIVATE = 0x00020000; public const Int32 AW_HIDE = 0x00010000; public const Int32 AW_SLIDE = 0x00040000; #endregion,导入Load、Closing事件代码实现,

25、#region private void Form1_Load(object sender, EventArgs e)AnimateWindow(this.Handle, 500, AW_BLEND | AW_CENTER | AW_ACTIVATE); /慢慢从透明到实体化效果private void Form1_FormClosing(object sender, FormClosingEventArgs e)AnimateWindow(this.Handle, 500, AW_CENTER | AW_BLEND | AW_HIDE); /实体慢慢透明消失 #endregion,效果图:,时间太短扑捉不到,请看视频效果或看自己实验效果,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报