title: 基于WPF的酷炫GUI窗口的实现全过程

date: 2020-08-14

permalink: /build/wpfgui

sidebarDepth: 2

tags:

  • wpf
  • gui
  • 软件
  • C#

    categories:
  • 开发

本文要实现基于 WPF 的酷炫 GUI 窗口,力图实现一个真正可用且实用的 GUI 窗口。

本文要实现的效果如图所示:

效果总结如下:

  • 无标题栏,或自定义标题栏
  • 窗口的半透明效果
  • 窗口可自由拖拽
  • Enter 以及 Esc 等默认按键
  • 右键菜单

1. 窗口的效果实现

1.1 窗口外观相关

首先新建一个窗口,更改外观,对窗口的属性进行如下设置:

  • 外观设置中 , 「AllowsTransparency」复选框勾选上,该窗口就可以透明化,同时「WindowStyle」会自动变更为「None」, 窗口的默认标题栏会消失,此时可以选择自定义标题栏。
  • 窗口允许透明化后,在「Background」「BorderBrush」等选项中,对窗体的背景及边框颜色进行设置。可以设置为纯色或各种渐变形态以及各种透明形态。
  • 使用「BorderThickness」项设置窗体的边框宽度。
  • 「Opacity」设置整个界面的不透明度

设置界面如下图所示:

1.2 窗口大小位置相关

更改窗口的位置,对如下属性进行设置:

  • WindowStartupLocation:修改窗口打开时的位置
  • WindowState:修改窗口打开时的大小状态,可设置全屏窗口
  • Topmost:本窗口置顶
  • Width和Height:窗口打开时的尺寸
  • MinWidth和MinHeight:窗口的最小尺寸

2. 方便对窗口操作的功能实现

为方便对窗口的操作,可进行如下设置:

  • 设置某个 button 的属性,设置 IsCancelIsDefault 属性,可设置 Enter 和 Esc 键所触发的按钮。
  • 设置拖动窗口的任意位置均可拖拽窗口,可设置窗口的事件调用方法,设置 MouseLeftButtonDown 事件的调用方法。

设置的方法如下:

private void Window_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
DragMove();
}

点击关闭按钮时结束整个应用程序,可设置关闭事件的回调方法,也可设置按钮点击事件的方法,如下:

private void btnExit_Click(object sender, RoutedEventArgs e)
{
Environment.Exit(0);
}

实现窗口的右键菜单及其点击事件,需要设置窗口的「ContextMenu」属性,或在 Xaml 文件中,添加如下内容:

<Window.ContextMenu>
<ContextMenu Name="ChangePassword">
<MenuItem Header="修改登录密码"
Click="MenuItemChangePassword_Click" />
<MenuItem Header="关于"
Click="MenuItemAbout_Click" />
</ContextMenu>
</Window.ContextMenu>

3.增加启动画面

想给程序增加一个启动加载画面,这也不难。

首先在工程中加入一张启动界面要显示的图片(例如:界面.jpg),在工程中选中图片右键--》属性,如下图:

将生成操作一栏设置成 SplashSrceen即可。

如果想要更多的设置,可以在app.xaml.cs中重写OnStartUp函数。

代码片段如下:

public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
SplashScreen s = new SplashScreen("界面1,jpg");
//显示初始屏幕 自动关闭设置false
s.Show(false);
//在3秒后关闭
s.Close(new TimeSpan(0, 0, 3));
base.OnStartup(e);
}
}

基于WPF的酷炫GUI窗口的实现全过程的更多相关文章

  1. WPF清爽酷炫的界面Mahapps.metro

    最近WPF项目中要求软件的风格要传统化一点,查阅了下资料发现了Mahapps.metro. 官网 http://mahapps.com/ 下面是官方的DOME,https://github.com/M ...

  2. WPF换肤之六:酷炫的时区浏览小精灵

    原文:WPF换肤之六:酷炫的时区浏览小精灵 由于工作需要,经常要查看到不同地区的 当前时间,以前总是对照着时区表来进行加减运算,现在有了这个小工具以后,感觉省心了不少.下面是软件的截图: 效果图赏析 ...

  3. 基于 Vue.js 2.0 酷炫自适应背景视频登录页面的设计『转』

    本文讲述如何实现拥有酷炫背景视频的登录页面,浏览器窗口随意拉伸,背景视频及前景登录组件均能完美适配,背景视频可始终铺满窗口,前景组件始终居中,视频的内容始终得到最大限度的保留,可以得到最好的视觉效果. ...

  4. 一个酷炫的,基于HTML5,Jquery和Css的全屏焦点图特效,兼容各种浏览器

    基于HTML5和CSS的焦点图特效,梅花图案的背景很有中国特色,而且还会动哦,效果超炫,推荐下载! 演示图 html代码 <!DOCTYPE html PUBLIC "-//W3C// ...

  5. 基于ViewPager的一些酷炫切换效果

    1.ViewPager可以用于实现类似banner的功能,我曾经在“时间超市”项目中使用过.但如何在此基础上实现一些切换的酷炫效果呢?今天细细品读了鸿洋大神的相关博文,终于学会了如何自定义切换效果. ...

  6. WPF会重写Windows GUI的历史吗?

    原文地址:http://tech.it168.com/zx/2007-09-15/200709141320653.shtml 你可能对微软的.NET框架3.0版本的最近的一次更新感到有点奇怪.主版本指 ...

  7. IntelliJ IDEA 新版发布:支持CPU火焰图,新增酷炫主题

    JetBrain 是一家伟大的公司,一直致力于为开发者开发世界上最好用的集成开发环境 就在上周,JetBrain 公司发布了 Java 集成开发环境 IntelliJ IDEA 最新版本 2018.3 ...

  8. 【翻译】用 Expression Blend 创建酷炫的 Button

    原文:Creating “Cool” Buttons with Expression Blend Author: Alex 在本文中,我们将考虑在Expression Blend用几种方法来创建酷炫的 ...

  9. [Asp.net 开发系列之SignalR篇]专题二:使用SignalR实现酷炫端对端聊天功能

    一.引言 在前一篇文章已经详细介绍了SignalR了,并且简单介绍它在Asp.net MVC 和WPF中的应用.在上篇博文介绍的都是群发消息的实现,然而,对于SignalR是为了实时聊天而生的,自然少 ...

随机推荐

  1. python3之工程中必须依赖的__init__.py

    1.  __init__.py 1.1  什么是__init__.py 在Python3工程里,当python3检测到一个目录下存在__init__.py文件时,Python3就会把它当成一个模块(m ...

  2. Python可视化--HA Candle作图

    Overview 最近遇到一个问题,做蜡烛图,怎么把x轴变为时间轴,candlestick_ohlc中的date数据需要时整数型,当选择其他类型数据时,会报错! 具体文章请参考:如何用Python计算 ...

  3. 做毕设的tricks

    CNKI上无法下载博硕士学位论文的PDF版本,只有CAJ版本,挺恶心的.直接下载安装Chrome extension就可以解决了. 链接:https://share.weiyun.com/5HGFF2 ...

  4. css的公共属性及原因

    在我们写多个网页的时候,会发现总会遇到很多相同的css样式,若是每次都要在网页代码中写,会浪费时间,同时也会消耗浏览器和计算机的性能.因此,我个人将我敲代码过程中的经常用到的css样式总结了一下.再用 ...

  5. 干货分享之Spring框架源码解析01-(xml配置解析)

    记录并分享一下本人学习spring源码的过程,有什么问题或者补充会持续更新.欢迎大家指正! 环境: spring5.X + idea Spring 是一个工厂,是一个负责对象的创建和维护的工厂.它给我 ...

  6. 学习笔记——不带修序列莫队 (luogu2079)小B的询问

    莫队是一种对于询问的离线算法 时间复杂度:O(\(n \sqrt n\)) 大致思想就是 首先将询问离线,然后对原序列分块,使得每一个\(l和r\)都在一个块里 然后按照左节点排序,若所在的块相等,就 ...

  7. CAD图DWG解析WebGIS可视化技术分析总结

    背景 AutoCAD是国际上著名的二维和三维CAD设计软件,用于二维绘图.详细绘制.设计文档和基本三维设计.现已经成为国际上广为流行的绘图工具..dwg文件格式成为二维绘图的事实标准格式. 但由于Au ...

  8. DDD领域驱动设计-概述-Ⅰ

     如果我看得更远,那是因为我站在巨人的肩膀上.(If I have seen further it is by standing on ye shoulder of Giants.)         ...

  9. vs编译问题总结

    编译遇到MSIL .netmodule or module compiled with /GL found; restarting link with /LTCG; add /LTCG to the ...

  10. 21.10.18 test

    可可大神出题,四款有趣的游戏推荐,第四个好玩/se T1 loopers \(\color{green}{100}\) 考虑钦定 \(a_1,a_i\) 的位置,固定左边一坨,那么剩下的一坨的 \(\ ...