如何用blend创建自定义窗口

摘要:
下面是如何创建自己的任意形状的窗口;通过这种方式,您可以从原始样式中删除最大化/最小化、边框和标题等元素,然后重写最大化、最小化、关闭和拖动等函数;3.2设置表单对象的属性。在对象和时间栏中选择窗口窗体对象。属性栏将自动显示表单的相关属性。在实践中,您可以使用路径、矩形或插入图片;
1 意义

       我们默认创建的窗口样式如下,时常会觉得这窗口太老套,从WINDOWS   98开始就这样,能不能做点改变?

       答案是肯定的,下面就介绍如何创建自己的任意形状的窗口;

如何用blend创建自定义窗口第1张

2 原理

       在窗口上面绘制一个闭合图形(圆、path、图片、矩形等),然后设置WindowStyle为none,设置AlowsTransparency为true,这样可以去掉原有风格的最大化最小化、边框、title等元素,得到一个只能看到我们的闭合图形的窗口,再在上面重写最大化、最小化、关闭、拖动等函数即可;

3 实现步骤

3.1 新建工程

       新建工程如下图设置;

如何用blend创建自定义窗口第2张

3.2 设置窗体对象属性

       在对象和时间栏选择window窗体对象,属性栏将会自动显示窗体的相关属性,找到外观栏展开勾选AlowsTransparency属性,设置windowStyle为none;

如何用blend创建自定义窗口第3张

3.3 插入闭合图形

       这里笔者使用两个圆,在实际可使用path、矩形或者插入一张图片都可;调整其背景色;在对象和时间栏选中windows对象,设置其background的alpha值为0。

如何用blend创建自定义窗口第4张

       现在得出效果如下,这也就是自定义窗口的雏形了:

如何用blend创建自定义窗口第5张

3.4 添加功能函数

       添加最大化、最小化、和关闭按钮(注意笔者在这里添加的是自定义的按钮),并为其添加click响应,选中对应按钮,属性面板中选中属性选项卡,点击 事件图标,添加click事件;

private void clickWinClose(object sender, System.Windows.RoutedEventArgs e)

{

    // 在此处添加事件处理程序实现。

    this.Close();

}

 

private void clickWinMax(object sender, System.Windows.RoutedEventArgs e)

{

    // 在此处添加事件处理程序实现。

    this.WindowState = WindowState.Maximized;

}

private void clickWinMin(object sender, System.Windows.RoutedEventArgs e)

{

            // 在此处添加事件处理程序实现。

    this.WindowState = WindowState.Minimized;

}

到此基本完成了自定义窗口了,运行效果如下:

如何用blend创建自定义窗口第6张

3.5 补充说明

       由于笔者没什么美感,所以做出来的窗口丑陋,大家可以自己做出更多漂亮的窗口,特别是用图片。此外大家还可以加上还原按钮、窗体的拖动等功能。

       第一次在博客上写篇像样的文章,希望能对大家有用,另外如果有什么错误的地方,请大家指出,不胜感激!

作者:家乡的萝卜

QQ:309284701

免责声明:文章转载自《如何用blend创建自定义窗口》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇MyCAT-安装配置读写分离.net core 3.0 实现读取appsettings.json配置文件下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

决策树算法总结

参考:《机器学习》Tom版 以及http://blog.csdn.net/v_july_v/article/details/7577684 一、简介 决策树是一个预测模型;他代表的是对象属性与对象值之间的一种映射关系。树中每个节点表示某个对象,而每个分叉路径则代表的某个可能的属性值,而每个叶结点则对应从根节点到该叶节点所经历的路径所表示的对象的值。决策树仅...

nodejs下function,new function和this的研究

转:http://www.html5china.com/html5-article-3023-1.html 重点我都高亮了! 由于在使用nodejs之前接触js也比较少,最近一直被js的function和new function所困惑,由于两者都可以呈现出面向对象的样子,不知道两者的差别在哪里,就此问题做了一些研究。在研究的过程中发现this指针是个...

markdown 使图片左对齐

方法一 HTML标签 markdown是支持html语言的,可以使用img标签插入图片。 但是使用这种方法时每次插入图片都要修改,比较麻烦。可以通过更改CSS样式的方法来更改插入图片的默认位置。 方法二 CSS样式 修改markdown编辑器的主题,在css文件中添加以下样式 p .md-image:only-child{ auto; text-alig...

delphi 7 mdi子窗体。。。无法更改以命令对象为源的记录集对象的 ActiveConnection 属性。

问题是这样的 我做了一个小程序 把 adoconnection放到了主窗体  连接的是access数据库; 新建了一个子窗体继承自FBase  新建了一个pubulic方法 qrySearch 实现了打开表; formCreate调用了qrySearch方法 ; public procedure qrySearch(cLiuShui: stri...

Java集合(五) Set 添加元素

Java中Set集合是如何实现添加元素保证不重复的?   Set集合是一个无序的不可以重复的集合。今天来看一下为什么不可以重复。   Set是一个接口,最常用的实现类就是HashSet,以HashSet为例。   HashSet类实现了Set接口, 其底层其实是包装了一个HashMap去实现的。HashSet采用HashCode算法来存取集合中的元素,因此...

15分钟破解网站验证码

  概述 很多开发者都讨厌网站的验证码,特别是写网络爬虫的程序员,而网站之所以设置验证码,是为了防止机器人访问网站,造成不必要的损失。现在好了,随着机器学习技术的发展,机器识别验证码的问题比较好解决了。 样本采集工具 这里我们采用wordpress的Really Simple CAPTCHA生成验证码的插件,之所以选择这个插件,一个是它的安装量很大,二个是...