基于C#的无边框窗体动画效果的完美解决方案 - 开源研究系列文章
最近在整理和编写基于C#的WinForm应用程序,然后碰到一个其他读者也可能碰到的问题,就是C#的Borderless无边框窗体的动画效果问题。
在Visual Studio 2022里,C#的WinForm程序提供了Borderless无边框窗体的样式效果,但是它没提供在无边框窗体下,窗体的载入、最小化、最大化的动画效果就没处理了。这个动画效果问题很多读者该也碰到过。我搜过其它的无边框窗体的例子,很多都是只在按钮里设置窗体状态为最小化、最大化,但是这个窗体却直接显示和直接消失的,没有那个带标题栏窗体的动画效果。所以,为了解决这个问题,就需要自己去处理这个无边框窗体的动画效果了。经过一番搜索和编码,终于有了今天这个完美的无边框窗体的动画效果解决方案的博文。具体看下面的介绍:
1、 项目目录;
项目目录见下面的截图,具体请打开解决方案进行查看。

2、 一些代码的介绍;
下面进行一些功能代码的介绍。
1) 无边框窗体父类定义;
该父类笔者整理放在了Componet目录里的BorderlessAnimation目录里,直接复制该目录到对应的项目里,具体的代码读者自己更改Native.cs文件和FormBase.cs文件里的命名空间,然后放在对应的组件库里或者项目文件夹下,让其它使用到的窗体能够应用。
该父类使用到的一些API函数放在了Native.cs里面。而FormBase文件为窗体的继承类,里面主要对窗体的消息处理等函数进行了编写。
2) 无边框窗体示例代码;
该窗体继承类,主要处理窗体的消息,然后进行执行操作,下面主要是一个例子,实现函数在文件下面。请读者自己阅读。因为比较简单,所以没有进行注释编写。

3) 窗体应用例子;
项目里提供了两个窗体使用示例。Demo1是原来的例子,Demo2是笔者自己写的一个使用例子,更加简洁,读者直接根据需要进行修改即可。

3、 运行效果图;
这里提供一下运行的效果:
1) 原来的例子:

2) 简洁的例子:

4、 源码下载;
这里提供源码下载,请需要的读者打开下面的链接:https://download.csdn.net/download/lzhdim/88084280
写到最后,如果大家对该方案有啥问题的,欢迎大家对源码进行修改更新,让该方案的源码能够给更多的需要解决无边框窗体动画效果的读者以帮助。其实,这个无边框窗体父类主要是通过Windows系统提供的API函数对窗体进行了改造,然后处理相关的窗体消息进行执行而已,具体请读者自己阅读源码。这个解决方案是笔者目前整理的最完美的C#无边框窗体的解决方案了,如果读者还有其它更好的方案及源码,请提供出来让笔者也能够进行应用。
基于C#的无边框窗体动画效果的完美解决方案 - 开源研究系列文章的更多相关文章
- Qt无边框窗体-模拟模态窗体抖动效果
目录 一.概述 二.效果展示 三.功能实现 四.相关文章 原文链接:Qt无边框窗体-模拟模态窗体抖动效果 一.概述 用Qt开发windows客户端界面确实是一大利器,兼顾性能的同时,速度相对来说也不错 ...
- 【转】【WPF】 WPF 调用API修改窗体风格实现真正的无边框窗体
WPF中设置无边框窗体似乎是要将WindowStyle设置为None,AllowTransparency=true,这样才能达到WinForm中无边框窗体的样式.但是AllowTransparency ...
- WPF 调用API修改窗体风格实现真正的无边框窗体
原文:WPF 调用API修改窗体风格实现真正的无边框窗体 WPF中设置无边框窗体似乎是要将WindowStyle设置为None,AllowTransparency=true,这样才能达到WinForm ...
- 01.WPF中制作无边框窗体
[引用:]http://blog.csdn.net/johnsuna/article/details/1893319 众所周知,在WinForm中,如果要制作一个无边框窗体,可以将窗体的FormB ...
- C#WinForm无边框窗体移动方法、模仿鼠标单击标题栏移动窗体位置
C#WinForm无边框窗体移动方法.模仿鼠标单击标题栏移动窗体位置 这里介绍俩种办法 方法一:直接通过修改窗体位置从而达到移动窗体的效果 方法二:直接伪装发送单击任务栏消息,让应用程序误以为单击任务 ...
- C#自定义按钮、自定义WinForm无边框窗体、自定义MessageBox窗体
C#自定义按钮.自定义WinForm无边框窗体.自定义MessageBox窗体 C#自定义Button按钮控件 效果展示 C#自定义Winform无边框窗体 效果展示 C#自定义无边框MessageB ...
- C#自定义Winform无边框窗体
C#自定义Winform无边框窗体 在实际项目中,WinForm窗体或者控件不能满足要求,所以就需要自己设计窗体等,当然设计界面可以用的东西很多,例如WPF.或者一些第三方的库等.本例中将采用WinF ...
- 【C#】使用DWM实现无边框窗体阴影或全透窗体
1.无边框窗体阴影,win7(需要开启Aero效果)及以上系统 public class LdwmForm : Form { public LdwmForm() { Initialize(); } / ...
- MFC 无边框窗体实现用鼠标拖动窗体边缘实现窗体大小变化
无边框窗体如何实现用鼠标拖动窗体边缘实现窗体大小变动呢?下面介绍一种方法,通过以下几个步骤即可实现: 1.实现WM_NCHITTEST消息,实现四条边框的模拟 2.实现WM_NCLBUTTONDOWN ...
- WinForm无边框窗体移动方法
C#WinForm无边框窗体移动方法.模仿鼠标单击标题栏移动窗体位置 这里介绍俩种办法 方法一:直接通过修改窗体位置从而达到移动窗体的效果 方法二:直接伪装发送单击任务栏消息,让应用程序误以为单击任务 ...
随机推荐
- DRF的认证组件(源码分析)
DRF认证组件(源码分析) 1. 数据库建立用户表 在drf中也给我们提供了 认证组件 ,帮助我们快速实现认证相关的功能,例如: # models.py from django.db import m ...
- [C++项目] 职工管理系统
文章目录 职工管理系统 1.管理系统需求 2.创建项目 2.1 创建项目 2.2 添加文件 3.创建管理类 3.1创建文件 3.2 头文件实现 3.3 源文件实现 4.菜单功能 4.1 添加成员函数 ...
- Prism Sample 2
例2引入了Region的概念. 例1中我们提到bootstrapper与app.xaml.cs,现在是这样的: public partial class App : PrismApplication ...
- TCP/IP网络模型
在网络模型中有分为7层模型(OSI模型)和5层模型和TCP/IP模型 OSI模型将应用层和表示层作为独立的两层,而TCP/IP模型将它们合并为一个应用层. 两种对比来说,TCP/IP模型更符合实际开发 ...
- HTAP for MySQL 在腾讯云数据库的演进
摘要:MySQL在充分利用多核计算资源方面比较欠缺,无法同时满足在线业务和分析型业务的客户需求,而单独部署一套专用的分析型数据库意味着额外的成本和复杂的数据链路.本次主题将介绍腾讯云数据库为满足此类场 ...
- 2021-09-27:Pow(x, n)。实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,x**n)。力扣50。
2021-09-27:Pow(x, n).实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,x**n).力扣50. 福大大 答案2021-09-27: 遍历n的二进制位. 时间复杂度:O( ...
- Java实现猜拳小游戏
Java实现猜拳游戏的核心在于电脑随机数的生成,Java中的随机数生成方法是:首先引入包 import java.util.*; 然后 int r=new Random().nextInt( ...
- 驱动开发:内核解析PE结构节表
在笔者上一篇文章<驱动开发:内核解析PE结构导出表>介绍了如何解析内存导出表结构,本章将继续延申实现解析PE结构的PE头,PE节表等数据,总体而言内核中解析PE结构与应用层没什么不同,在上 ...
- SPI通信协议
1. SPI 通信协议简介 SPI 协议是由摩托罗拉公司提出的通讯协议(Serial Peripheral Interface),即串行外围设 备接口,是一种高速全双工的通信总线.它被广泛地使用在 A ...
- mimikatz
mimikatz 来源:https://github.com/gentilkiwi/mimikatz Mimikatz 是由法国人 Benjamin Delpy 编写的 Windows 密码提取工具, ...