首页 > 编程语言 >基于C#的无边框窗体动画效果的完美解决方案 - 开源研究系列文章

基于C#的无边框窗体动画效果的完美解决方案 - 开源研究系列文章

时间:2023-07-24 14:56:09浏览次数:42  
标签:动画 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#,边框,源码,窗体,读者
From: https://www.cnblogs.com/lzhdim/p/17576147.html

相关文章

  • git config --global --add safe.directory
     克隆下源码对其操作时git报错fatal:unsaferepository并提示可以:gitconfig--global--addsafe.directory这个命令是用来将一个安全目录添加到全局的Git配置中。具体来说,它会在Git的配置文件中添加一行类似于"safe.directory=/path/to/directory"的配置项,表示......
  • 通过docker安装的jira提示We've detected a potential problem with JIRA's Dashboard
    正常通过docker安装jira后,访问是不会出问题的但是如果使用nginx代理后,就是在nginx里配置了proxy_passhttp://localhost:2800再访问后,就会报错We'vedetectedapotentialproblemwithJIRA'sDashboardconfigurationthatyouradministratorcancorrect.Clickhereto......
  • Spring Boot集成Docker部署教程
    前言Docker有时候确实易用,但SpringBoot官方好像并不推荐这种方式,按照个人理解应该是SpringBoot已经做了一个很优秀的集成,对于Docker这种容器化让开发人员不能专注于开发...附文为SpringBoot官方教程:https://spring.io/guides/topicals/spring-boot-docker/ 正文环境是J......
  • ARMA-GARCH-COPULA模型和金融时间序列案例|附代码数据
    原文链接: http://tecdat.cn/?p=3385最近我们被客户要求撰写关于ARMA-GARCH-COPULA的研究报告,包括一些图形和统计输出。从读取数据中获得各种模型的描述,包括一些图形和统计输出。 > oil = read.xlsx(temp,sheetName =“DATA”,dec =“,”)然后我们可以绘制这三个时间序列......
  • C#中的重写与多态知识点整理(刘铁锰老师课堂笔记)
    在C#中,重写(Override)和多态(Polymorphism)是面向对象编程中的重要概念。通过重写和多态,我们可以更好地组织和管理代码,提高代码的可维护性和可扩展性。重写(Override)重写是指在派生类中重新实现基类中已经定义的方法。通过重写一个方法,我们可以为派生类中的该方法提供新的实现,同时让......
  • AT_abc218_d 题解
    洛谷链接&Atcoder本篇题解为此题较简单做法及较少码量,并且码风优良,请放心阅读。题目简述给定一个平面内的\(N\)个点的坐标,求这\(N\)个点中选\(4\)个点可构成正方形的方案数。注:构成的正方形的边需平行于\(x\)轴或\(y\)轴。例如下图就不符合要求,则不考虑这种情况:......
  • Linux系列---【CentOS 7通过MSTSC连接远程桌面】
    安装对应的yum源yumlistlightdmxorgxrdpxrdp可以看到这些软件都在epel中,如果没有的话,请先安装对应的yum源。命令如下:yuminstall-yepel-release确认yum源没有问题之后,我们就可以进行安装了。安装lightdmxorgxrdpxrdplightdm提供了图形登录界面和用户会话管理......
  • AT_abc215_d 题解
    洛谷链接&Atcoder链接本篇题解为此题较简单做法及较少码量,并且码风优良,请放心阅读。题目简述给定\(N\),\(M\)及含有\(N\)个整数的序列\(A\)。求\(1\simM\)中与所有\(a_i\)均互质的整数及个数。思路首先说一下最开始的想法。直接暴力枚举\(1\simM\)的数,再分......
  • 【项目实战】Kafka 重平衡 Consumer Group Rebalance 机制
    ......
  • 经典!H3C交换机基本配置请收好
    下午好,我的网工朋友。思科和华为的交换机配置命令,一些交换机应用配置案例,给你们说过不少,可以根据关键词搜索直达哈。部分网工新人表示,有些配置文章不好理解,看不明白命令。思来想去,正好华三的交换机配置也没给你系统讲过,今天来一篇华三的,给你整一整H3C交换机配置相关内容。恢复出厂......