【知识分享】Batch(批处理)-学生管理系统可视化界面的应用

前言

 

实验室布置了以小组为单位完成学生管理系统的任务

而仅仅基于C语言写的控制台程序只能用键盘操作,也没有好看的图形化界面,于是我想用自己比较熟练的Batch来写个图形界面

当然,batch完成的也是控制台程序,但可以外挂插件呀!

之前有过FETS Cleaner的开发经历,那是我们做的第一个有可视化图形界面的Cleaner。图中的版本是Cleaner7.7.1

那时我和同学通过batch-image-img-cmos-curs的组合基本完成了图形界面设计,并把这个具有图形化能力的架构命名为HUOCHAI(火柴)4.0;但一大问题是:所有按钮和壁纸都是以一张图片的形式固定死的,这样导致动效只能做定帧动画,而且需要写大量诸如

plugin/img pictures/1.bmp:800,600
plugin/img pictures/2.bmp:800,600
plugin/img pictures/3.bmp:800,600
plugin/img pictures/4.bmp:800,600
plugin/img pictures/5.bmp:800,600

这样的代码使图片逐帧播放形成假动效。而代价就是大量重复和可笑的代码堆砌,大大降低运行效率。那已经是2017年的事情了,我还在上初中。

老版本HUOCHAI4.0架构是怎么做的?

在大一我就已经对HUOCHAI4.0做出了一些改动,加入了统一动效理念,意思是所有需要调用的动效只走一个通道,而不是需要动效的地方就在对应代码下边加对应动效内容。这样代码明显简洁多了。但接下来最需要做的是矢量化。

(这是用于Cleaner7.7的统一动效部分的代码)

矢量化什么意思?就是说按钮和壁纸不是共同在一张图片上的,我要做到壁纸是壁纸,按钮是按钮,悬浮窗是悬浮窗。这就需要引入图层概念了。先显示示背景层,再显示按钮层,这样就可以做到很多之前做不到的事情了!

这只是HUOCHAI4.0在图形界面上的一些内容,操控方面先不提了,重头戏在下面!

不过如此嘛!那为学生管理系统重写的HUOCHAI5.0有啥进步吗?

嘿嘿!进步大了!

 看下基于HUOCHAI5.0的学生管理系统的主界面长什么样吧!

HUOCHAI5.0架构才支持的新特性:

1.无缝信息共享——多窗协同

现在基于HUOCHAI5.0的应用程序拥有无缝的信息共享能力,程序可以对自身代码进行操作并拷贝“镜像”程序,同时共享所有函数和模块,可以随时互相调用。这就使得我们可以完成全新功能——QuickControl栏的设计

就像这样,启动多窗协同功能后可以多开窗口,满足老师一边编辑一边添加的需求~同时信息实时传输,共享本地文件和操作。

2.线性动效——QyulEngine

我们终于终于终于实现了线性动效!!不是调用库完成的,而是自己写了一个路径规划器!

先看下实现成果吧,在哪里点开,动画就从哪里开始绘制,直到扩展到全屏。 QyulEngine是怎么工作的?看下结构。

通过预制动效库,可以直接调用“二级菜单切换”,“线性打开动画”,“切牌动画”,“蒙版”等等效果。

路径计算器负责计算扩展到全屏的每个像素如何运动,并通过调用img实现平滑放大缩小。

纠正器负责在像素不能被整除时,如何平滑的改变对象运动速率和路径让其完美填满整个窗口。

img和image两个插件负责在batch窗口内显示图片,这里感谢两位作者!!

3.log管理——实时生成日志

这是统一动效2.0的部分代码,所有操作步骤诸如点击、移动、QyulEngine、动效库等等全部被封装且参数化,所有图片内容都是需要提前set并走完整个呈现流程的。这样LOG记录器终于可以开发了!

 运行后每次调用和闪退都会被记录在案,方便开发者调试和调取分析。可以说HUOCHAI架构上迟迟未到的一大重要功能终于补齐了。在设置-架构中,HUOCHAI5.0还能统计log的占用,通过绿-黄-红三色提示缓存占用,并可以清理掉它~

4.控件级分辨率感知——对高分辨率、低分辨率屏幕的同时支持

1920*1080分辨率下你的程序能正常运行,3840*2160分辨率下呢——它可能就只有这么大了

(图中是基于HUOCHAI4.4开发的FETS Cleaner7.5.3版本)

HUOCHAI5.0可以对每个控件覆图尺寸进行等比缩放,并对鼠标点触坐标、动效中每个像素坐标进行重新计算规划路径,用户的显示器无论是远古的800*600还是带鱼屏、高分屏,窗口都不会过大或者过小,点触也不会错位。(这可能是很基础的能力,但是HUOCHAI4是初中写的哇,当时可没有考虑这么多,一通乱写——HUOCHAI5也是在统一动效2.0的加持下才能勉强完成的...)

5.基础能力优化,更快更稳~

还记得介绍开始时渲染能力的大幅提升和占用的下降吗?我们对基础代码进行了大量改写:

一、统一动效2.0是增加效率的头号功臣,大大减少代码体积的同时大幅提高了架构运行效率。

二、本地记录器的加入大大减少了运算量,比如同一路径需要反复调用的动画场景,只需计算一次并将计算结果保存在本地,下次使用直接调用记录的数据而不需要重复运算,把算力尽可能的留下了~

三、兼容多语言间传参,C语言和batch之间也能愉快的互相调用啦

6.控件外观的分层渲染

下面欣赏下基于HUOCHAI5.0开发的学生管理系统界面吧!

 

 

 

 

 

 还有很多很多美图~~~~希望这次改写的HUOCHAI可以助这个小小的项目开花结果吧~

最后放一下网址fetssoft.icoc.me,那有个基于HUOCHAI4.5写的Cleaner7.7,大家可以拿去研究。

HUOCHAI5目前还在实验阶段,可能存在很多影响体验的bug甚至严重错误,待开发完成我也会放到CSDN上和网站上

QyulEngine现在是已经完成并放到下载站中了,需要的朋友可以去下载一下。

下面是使用说明,使用方法非常简单

————————————————————————————————————
说明版本:1.0
FETSTEAM QyulEngine Ver1.0.1
基于Img.exe实现
功能:实现任意位置到另一位置的平移同时放大/缩小,实现概念意义上的线性动画
————————————————————————————————————
调用之前必须提供参数:
1.原图片大小
set a=1
set b=1
2.原图片位置
set a1=1
set b1=1
3.放大后图片大小
set x=1
set y=1
4.放大后图片位置
set x1=1
set y1=1
5.可绘制画布大小
set x_full=1
set y_full=1
6.帧率
set fps=1
7.set address=Pictures/hello.png

p.s
1.使用时把上文举例提到的所有“1”替换成你需要的数据即可
2.图片位置是指图片左上角像素点所位于可绘制画布的位置
3.图片目前支持.png和.bmp格式,默认为透明
4.fps是指起始点到终止点要经过多少帧,理论上取决于cpu速率,真实帧率可以无限高
————————————————————————————————————
调用方法:
call QyulEngine.exe
————————————————————————————————————
举例说明:
set a=199
set b=101

set a1=20
set b1=387

set x=800
set y=600

set x_full=800
set y_full=600

set x1=0
set y1=0
set fps=10
set address=Pictures/market.png
call QyulEngine.exe

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值