六月 (zminutes.com)

让我们置身于并持续扩张知识的海洋!

由 EasyX 二次开发的渲染库

大家好,这里是【六月】的首次发帖。下面进入正题:

它是一个类。(需要使用 Visual Studio VC++)

那么,它实现了什么?

简单来说,它所做到的有点类似带有 id 的 HTML tag。就是说,屏幕上显示的任何事物都被“对象化”了。所有显示在屏幕上的都可以被篡改,而不是被覆盖。

举个例子吧,比较直观:

一般您使用 EasyX 进行绘图时,想要画一个矩形,然后在某一刻,矩形改变颜色。

(不假定已经初始化 initgraph)

EasyX 一般实现逻辑:

  1. initgraph(...)

  2. 声明并定义改变前后的两种颜色;

  3. 建立一个 while 循环以实现帧循环;

  4. 开始计时器(或者一个 if),当到达您想要改变颜色的时间点时,setfillcolor。

  5. (可能需要 _getch();)

  6. closegraph()

本类的实现逻辑:

  1. 创建渲染窗口:WindowProc wnd(640, 480, 0xffffff);

  2. 声明矩形对象并定义初始颜色:IP_Rectangle rect = IP_Rectangle(/* 构造函数参数中有颜色设置 */);

  3. 定义您的改变后颜色

  4. 传入对象:wnd.AddElement(&rect);

  5. 定义一个代码块进行计时/if 判断,就可以为您的矩形对象更改颜色;

  6. (可能需要 _getch();)

虽然看起来步骤数量差不多,但使用本类将不用考虑任何帧循环和帧渲染,对于您想要实现如【背景图片】等静态物体的渲染很有帮助,代码将不用考虑帧渲染,提升了代码逻辑性,并减少了 debug 的麻烦度。

之后会对该类添加更多新功能,并完全使用类似 HTML 的 div 的全能模块,取代单独定义四种(Text、Rectangle、Image、Ecllipse)类型。

链接(注意,请使用 /src 中的文件,/DrawingObject 中的 .sln 项目文件由于项目保存地址的不同导致无法打开):Junhao139 的 GitHub 项目

[ 项目中会有更新日志哦 (虽然 GitHub 自带 Commit) ]

本人目前由于在国外的缘故,寒假的结束时间要早于中国国内的寒假开始日期。因此当您之后能够全身心投入到您的项目中时,使用的将会是一个更加全面、完善的功能插件。

@六月

编写日期【2020/12/16】

更改日期【暂无】

评论 (1) -

  • 六月哥哥好厉害,为哥哥打call!!

添加评论