最近在整理和编写基于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#的无边框窗体动画效果的完美解决方案 - 开源研究系列文章的更多相关文章

  1. Qt无边框窗体-模拟模态窗体抖动效果

    目录 一.概述 二.效果展示 三.功能实现 四.相关文章 原文链接:Qt无边框窗体-模拟模态窗体抖动效果 一.概述 用Qt开发windows客户端界面确实是一大利器,兼顾性能的同时,速度相对来说也不错 ...

  2. 【转】【WPF】 WPF 调用API修改窗体风格实现真正的无边框窗体

    WPF中设置无边框窗体似乎是要将WindowStyle设置为None,AllowTransparency=true,这样才能达到WinForm中无边框窗体的样式.但是AllowTransparency ...

  3. WPF 调用API修改窗体风格实现真正的无边框窗体

    原文:WPF 调用API修改窗体风格实现真正的无边框窗体 WPF中设置无边框窗体似乎是要将WindowStyle设置为None,AllowTransparency=true,这样才能达到WinForm ...

  4. 01.WPF中制作无边框窗体

    [引用:]http://blog.csdn.net/johnsuna/article/details/1893319   众所周知,在WinForm中,如果要制作一个无边框窗体,可以将窗体的FormB ...

  5. C#WinForm无边框窗体移动方法、模仿鼠标单击标题栏移动窗体位置

    C#WinForm无边框窗体移动方法.模仿鼠标单击标题栏移动窗体位置 这里介绍俩种办法 方法一:直接通过修改窗体位置从而达到移动窗体的效果 方法二:直接伪装发送单击任务栏消息,让应用程序误以为单击任务 ...

  6. C#自定义按钮、自定义WinForm无边框窗体、自定义MessageBox窗体

    C#自定义按钮.自定义WinForm无边框窗体.自定义MessageBox窗体 C#自定义Button按钮控件 效果展示 C#自定义Winform无边框窗体 效果展示 C#自定义无边框MessageB ...

  7. C#自定义Winform无边框窗体

    C#自定义Winform无边框窗体 在实际项目中,WinForm窗体或者控件不能满足要求,所以就需要自己设计窗体等,当然设计界面可以用的东西很多,例如WPF.或者一些第三方的库等.本例中将采用WinF ...

  8. 【C#】使用DWM实现无边框窗体阴影或全透窗体

    1.无边框窗体阴影,win7(需要开启Aero效果)及以上系统 public class LdwmForm : Form { public LdwmForm() { Initialize(); } / ...

  9. MFC 无边框窗体实现用鼠标拖动窗体边缘实现窗体大小变化

    无边框窗体如何实现用鼠标拖动窗体边缘实现窗体大小变动呢?下面介绍一种方法,通过以下几个步骤即可实现: 1.实现WM_NCHITTEST消息,实现四条边框的模拟 2.实现WM_NCLBUTTONDOWN ...

  10. WinForm无边框窗体移动方法

    C#WinForm无边框窗体移动方法.模仿鼠标单击标题栏移动窗体位置 这里介绍俩种办法 方法一:直接通过修改窗体位置从而达到移动窗体的效果 方法二:直接伪装发送单击任务栏消息,让应用程序误以为单击任务 ...

随机推荐

  1. GPT-NER:通过大型语言模型的命名实体识别

    讲在前面,chatgpt出来的时候就想过将其利用在信息抽取方面,后续也发现了不少基于这种大语言模型的信息抽取的论文,比如之前收集过的: https://github.com/cocacola-lab/ ...

  2. Godot 4.0 文件读取(C#)

    搞半天才弄明白Godot文件操作. Godot的文档总是试图让我使用自定义Resource来支持文件操作,但是我只需要读取纯文本. 读取纯文本 读取纯文本的方式如下: //Godot.FileAcce ...

  3. BugKu_never_give_up

    if(!$_GET['id']) { header('Location: hello.php?id=1'); exit(); } $id=$_GET['id']; $a=$_GET['a']; $b= ...

  4. SQL Server数据库判断最近一次的备份执行结果

    1 麻烦的地方 在SQL Server的官方文档里面可以看到备份和还原的表,但是这些表里面只能找到备份成功的相关信息,无法找到备份失败的记录,比如msdb.dbo.backupset.对于一些监控系统 ...

  5. 【Redis】数据类型介绍

    一.字符 string Redis常用基本类型之一,存入Redis的所有key都是字符类型,常用于保存Session信息 字符类型 命令 含义 复杂度 set <key> <valu ...

  6. 文心一言 VS chatgpt (5)-- 算法导论2.2 3~4题

    三.再次考虑线性查找问题(参见练习 2.1-3).假定要查找的元素等可能地为数组中的任意元素,平均需要检查输入序列的多少元素?最坏情况又如何呢?用0记号给出线性查找的平均情况和最坏情况运行时间.证明你 ...

  7. 2021-09-04:加油站。在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost

    2021-09-04:加油站.在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升.你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost ...

  8. Django4全栈进阶之路23 项目实战(报修类型表):应用程序命名空间app_name和分页组件paginator

    1.应用程序命名空间app_name from django.urls import path from . import views from .views import RepairDetailV ...

  9. rust 中 str 与 String; &str &String

    String String 类型的数据和基本类型不同,基本类型的长度是固定的,所以可以在栈上分配,而String类型是变长的,所以需要在堆上分配,所以String 类型实际上是一个指向堆的指针.他的结 ...

  10. Python潮流周刊#2:Rust 让 Python 再次伟大

    这里记录每周值得分享的 Python 及通用技术内容,部分为英文,已在小标题注明.(本期标题取自其中一则分享,不代表全部内容都是该主题,特此声明.) 文章&教程 1.Python修饰器的函数式 ...