1 意义

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

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

2 原理

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

3 实现步骤

3.1 新建工程

新建工程如下图设置;

3.2 设置窗体对象属性

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

3.3 插入闭合图形

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

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

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;

}

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

3.5 补充说明

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

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

作者:家乡的萝卜

QQ:309284701

转载于:https://www.cnblogs.com/qiujiahong/archive/2012/03/10/2388791.html

如何用blend创建自定义窗口相关推荐

  1. 使用 CSS 创建自定义鼠标游标

    使用 CSS 创建自定义鼠标游标 使用 CSS 创建自定义鼠标游标 1. CSS 中的游标概述 2. 如何用 CSS 创建一个自定义游标 3. 如何用 JavaScript 创建自定义游标 4. 浏览 ...

  2. Electron 自定义窗口 —— 桌面时钟

    本节主要讲解如何使用 Electron 创建自定义窗口,并带领大家开发一款漂亮的桌面时钟,效果如下: 众所周知,在 Electron 里面,窗口都是通过实例化 BrowserWindow 类创建出来的 ...

  3. 小D学blend-----如何创建自定义的Tooltip控件

    运行环境:blend 4.0或者blend 3.0 +silverlight 3.0(其实我相信步骤应该是差不多的) 语言:C# Tooltip类:它是表示一个长方形的小弹出窗口,该窗口在用户将指针悬 ...

  4. 只需12 个步骤,就能在AWS中创建自定义VPC,用过都惊了!

    作者| Kunal Yadav 译者 | 天道酬勤 责编| 徐威龙 封图| CSDN下载于视觉中国 在本文中,作者将创建一个具有公共子网和私有子网的自定义VPC.每个子网中都有一个EC2实例(已安装W ...

  5. WPF.UIShell UIFramework之自定义窗口的深度技术

    无论是在工作和学习中使用WPF时,我们通常都会接触到CustomControl,今天我们就CustomWindow之后的一些边角技术进行探讨和剖析. 窗口(对话框)模态闪动(Blink) 自定义窗口的 ...

  6. c语言api函数绘制渐变色,创建分层窗口,实现图像渐变

    有没有方法创建一个半透明的窗口,并将该窗口上发生的所有鼠标事件都传递到桌面或另一个应用窗口处理? Scott Stringham  当然可以,并且相当容易.你只要创建一个"分层窗口" ...

  7. 如何使用Bootstrap4和ES6创建自定义确认框

    by Prashant Yadav 通过Prashant Yadav 如何使用Bootstrap4和ES6创建自定义确认框 (How to create a custom confirm box wi ...

  8. flink 自定义 窗口_《从0到1学习Flink》—— Flink Data transformation(转换)

    前言 在第一篇介绍 Flink 的文章 <<从0到1学习Flink>-- Apache Flink 介绍> 中就说过 Flink 程序的结构 Flink 应用程序结构就是如上图 ...

  9. 创建自定义Widgets小部件扩展

    创建自定义Widgets小部件扩展 创建自定义Widgets小部件扩展 扩展名类型 创建一个扩展 向Qt Designer公开扩展 创建扩展工厂 访问Qt Designer的扩展管理器 创建自定义Wi ...

最新文章

  1. Numpy 数组复合排序——mX4列,根据多列组合排序
  2. 【OpenCV 4开发详解】图像与视频的保存
  3. python调用shell命令-Python怎么运行shell脚本
  4. HDU-2502 月之数 组合数
  5. (转)深度解析挖矿的逻辑和技术实现
  6. c语言根号11取值两位小数,用C语言将一个数开根号后再取倒数的方法
  7. 关于计算机科学与技术二级学科的一点介绍
  8. spring中注解及原理
  9. 安卓 IOS上架流程
  10. ubuntu20.04不能切换输入法
  11. 56.com flash http://www.56.com/deux4_97177389.swf
  12. EMC电磁兼容1:EMC、EMI、EMS是什么?它们之间有什么关系?
  13. php根据URL获得网页内容
  14. []==[]和[]==![]
  15. 如何去掉德国Kilu免费空间的广告
  16. Nodejs用户登录,退出案例
  17. 游戏开发笔记十六 讲解一个完整的回合制游戏demo
  18. flutter常用命令及问题
  19. 再探Java抽象类与接口的设计理念差异
  20. dijkstra算法和A*算法

热门文章

  1. cocos2d-x调度器原理,mainloop的Update
  2. AndroidStudio安卓原生开发_activity关闭的时候把数据传递给上一个activity---Android原生开发工作笔记93
  3. k8s高可用集群_搭建高可用集群(部署master1节点初始化)---K8S_Google工作笔记0057
  4. UI学习笔记---EasyUI panel插件使用---03
  5. android学习笔记---50_样式与主题,给控件使用样式,给应用使用主题
  6. JPA学习笔记---JPA理解---第一个JPA程序
  7. redhat 7 防火墙配置
  8. mysql utf-8_完美解决mysql下utf-8的乱码问题
  9. 随想录(嵌入式工程师的出路)
  10. 随想录(python第三方库中的 setup.py)