65.9K
CodeProject 正在变化。 阅读更多。
Home

EduBuild App Builder

starIconstarIconstarIconstarIconstarIcon

5.00/5 (2投票s)

2013年8月21日

CPOL

10分钟阅读

viewsIcon

17489

面向非程序员的桌面应用构建器,用于教育


此应用条目已入围第二轮!

将定期发布有关此应用进度的更新。


2013 年 9 月 12 日     正在处理我的 GUI 框架,为项目做准备。正在等待两台设备送达,因为我需要测试每台设备以了解它们在图形处理方面的表现。计划测试精灵引擎和 3D OpenGL 引擎,以了解它们在这些设备上的性能。

2013 年 9 月 13 日      正在试验两台 Windows 8 移动 PC,一台是 EXOPC 平板电脑,另一台是联想(非触摸)笔记本电脑,测试 WIN32 控件、OpenGL 和基于 DIB 的精灵引擎,以了解性能如何以及考虑 WIN32 控件与触摸屏相关的问题。我需要一个基准来比较为比赛提供的两台联想设备,以了解它们在图形处理方面的性能。尤其是“一体机”让我担忧,因为它具有高分辨率(1920 x 1080)。全屏应用程序将使 PC 达到极限,而我不会使用任何 DirectX,只会使用 GDI(DIB)和 OpenGL,因此性能将是重要的考虑因素。平板电脑将运行 Atom CPU,因此它的性能可能不会非常好,所以构建一个对桌面来说“快速流畅”的应用程序将是一个挑战。一个担忧是两台设备如何处理 OpenGL glDrawPixels 函数。低端 GPU 上的 OpenGL 通常在移动像素方面性能不佳。在构建应用程序之前,我需要认真考虑哪些功能与触摸屏配合良好,哪些功能将为我提供最佳性能。


原始第一轮概念文章


为非程序员设计的、专为触摸和教育而优化的应用程序生成器

此应用程序将面向**平板电脑**的**教育**类别。特别是在教育领域,对于在不具备编程能力的情况下也能构建自己的应用程序存在着需求和愿望。想象一下,一位教师想要创建一个简单但有用的应用程序,学生可以自由使用,并且该应用程序完全定制以满足课堂的特定需求。想象一下,学生们渴望仅仅为课堂、演示、娱乐甚至研究而创建自己的应用程序。

应用设计的三个关键方面

此类应用生成器的第一个关键方面是设计阶段。设计阶段必须易于学习、直观且功能强大。应用程序的设计模式不仅需要拖放功能,还需要某种方法来产生精确的布局和间距。仅仅提供许多照片显示应用程序中常见的触摸拖动功能,通过手指拖动和缩放,将不足够。提供更传统的拖动环境(如真实软件 RAD 环境中所见的,带有吸附网格、对象拖动柄等),但针对触摸进行调整,将有益处。例如,典型的编程语言设计器中使用的小拖动柄将不起作用。需要的是一个拖动引擎,可以动态修改以在鼠标和触摸之间切换。例如,在使用触摸屏时,软件的设计模式需要能够放大对象拖动柄,使其“对触摸友好”,如下所示:

更好的是,最终用户应该能够选择最适合他们的拖动柄大小。App Builder 软件将提供一个这样的环境,具有真实的拖动柄、真正的拖放和尺寸调整,能够一次拖动多个对象,以及真正的吸附网格,以鼓励对象平衡且令人愉悦的布局。

此应用程序的第二个方面将是一个后台脚本语言,它可以定义项目中的所有用户界面元素,同时提供某种事件语法和功能,使用户界面能够响应用户的操作(例如,加载电影、动画对象、显示文本等)。

第三个方面将是一个轻量级运行时,可以运行已完成的应用程序,以便最终用户可以将他们构建的应用程序自由分发给他人。运行时需要是可移植的(意味着只需复制即可运行),因此应用程序可以从 USB 驱动器、SD 卡等运行。此外,运行时本身能做的事情越多,而不是依赖于沉重的图形/多媒体内容,这些应用程序就会越小,并且更容易共享。

种类繁多的完整准备好的对象

软件设计引擎中提供的完整准备好的对象越多,所需的外部内容就越少,就可以更快地构建高质量的应用程序,并且它们将更有用。在编程世界中,开发人员通常会购买各种预构建的组件/控件添加到他们的应用程序中,但这对于此应用程序来说是不够的。软件需要能够使用最少的资源创建自己独特的用户界面元素。对象/控件需要从一开始就对最终用户有意义,而不是一个需要大量编码才能使其执行某些操作的低级组件。幸运的是,Windows 的设计几乎可以实现无限的自定义方式,使用一组核心控件,但可以修改它们的外观或感觉。通过利用 Windows 的这一功能,该软件可以设计出一套独特的大型预构建用户界面元素。例如,一个简单的控件,如列表框,可以转换为数十种有用、更具体的控件,如下所示:

上述控件是使用 OwnerDraw 创建的,它允许您自定义绘制现有控件,例如列表框或组合框。按钮控件不必局限于当前的 Windows 主题,它们也可以使用 OwnerDraw 自定义绘制,如下所示:

现在,软件设计模式中的一些对象需要更复杂才能为最终用户提供更强大的功能,以便他们能够构建更复杂的应用程序。这需要利用更复杂和更强大的用户界面元素。一些对象可以是更高层级的对象,由多个低级对象构建而成。例如,RichEdit 控件可以与其他控件组合以创建迷你文字处理器(基于 RichEdit 的文本编辑器),因此一个能够编辑文本并格式化段落、字体和颜色的迷你文字处理器对象将非常有用。最终用户只需将 RichEditor 拖放到他们的应用程序中并调整大小,几乎不需要付出什么努力。但需要做的事情还有很多。

还有一些更高级的控件,比如属性列表框控件,如下所示:

它可以定义类别标题、文本字段、下拉字段、颜色字段(显示颜色对话框以选择新颜色)或文件字段(显示打开文件对话框以选择文件)。

还有一个文件列表框控件,用户可以添加一个迷你文件浏览器,该文件浏览器非常易于使用,任何人都可以像这样使用:

易于使用、功能强大的用户界面对象,使最终用户能够轻松设计功能强大的应用程序。

图形和多媒体

图形功能和多媒体功能对于教育用途也很重要。一些对象需要面向图形。但请考虑上述挑战,关于尽量减少应用程序对外部内容的依赖。如果图形功能的设计能够以更少的资源完成更多工作,那就太好了。如果需要更大的内容,当然可以使用,但最好有一些能够以更少资源完成更多工作的图形功能。此时,最好解释开发此软件所使用的方法,这将更好地解释目标将如何实现。

将使用的开发工具

该软件将使用 PowerBasic 32 位原生代码编译器和 EZGUI 5.0 Professional(一款具有自己 GUI 框架的 RAD 工具)来创建。我将使用 GUI 框架的多种功能来构建软件。首先,它内置了一个拖放引擎,专为构建所见即所得(WYSIWYG)风格的应用程序而设计,具有真实的吸附网格、拖动柄控件(可自定义)以及一次拖动多个控件的能力。我将不只是使用 WIN32 中的标准控件,而是创建各种新的自定义控件,这些控件非常适合教育需求,使用了 GUI 框架中的 OwnerDraw 引擎。这大大减小了应用程序的大小,同时提供了更多的选择。例如,一个 OwnerDrawn 按钮只需少量代码,如下所示:

创建控件

     EZ_Color 1, 25
     EZ_UseIFont "Tahoma", 12,"BV"
     EZ_ODButton %FORM1_BUTTON2, .125, 5.6875, 16, 4, "Button", "T"
     EZ_SetRegion "Form1", %FORM1_BUTTON2,-2,0

绘制控件

SUB EZ_FORM1_ParseEvents(CID&, CMsg&, CVal&, Cancel&) 
     SELECT CASE CID&
          CASE  %FORM1_BUTTON2
               IF CMsg&=%EZ_OwnerDraw THEN
                    EZ_Draw3DButtonRR "Form1", %FORM1_BUTTON2, CVal&, 25, 1,  EZ_ODIFont
               END IF

       

使用 GUI 框架中的低级 OwnerDraw 引擎,列表框、组合框和列表视图等控件可以自定义以生成更多独特的控件。GUI 框架中还内置了许多自定义控件,例如:

  • 属性列表框控件
  • 文件列表框控件
  • 形状控件
  • 热点控件
  • 掩码编辑控件

对于多媒体,有一个 MCI 控件,它可以处理 Windows 中各种内置的多媒体,包括视频、MIDI、音频和 CD 音频。

现在,对于图形,我将使用 GUI 框架中的所有图形功能。一个有用的工具是使用框架中的 Turtle Graphics 引擎。这可以用来创建可缩放的矢量图形图像。例如,想象通过基于矢量的线条和点列表来定义地图。地图将完全可缩放,甚至在打印时也是如此。使用 Turtle Graphics 的矢量图像开销很小,即使是儿童也能使用简单的 Turtle 语言编写 Turtle Graphics。

接下来,我将使用框架的 Canvas 控件来绘制或动画对象。Canvas 控件支持 2D 精灵引擎,可用于动画。它还支持一个效果引擎,允许将图形叠加到前一层上,使用诸如 alpha 混合等技术。2D 精灵允许 Canvas 将精灵图像与背景分开,并且可以使用抗锯齿、帧动画和 alpha 混合进行操作。

最后,glCanvas 将用于添加 3D 元素。glCanvas 控件是一个实际的窗口类,因此它可以用于多个 3D 对象实例,就像其他窗口控件一样,它支持可以暴露给最终用户的脚本语言,其中可以定义 3D 原始对象,甚至可以显示 STL 3D 模型。3D 原始对象允许定义许多独特的 3D 对象,开销很小,以保持内容更低。

通过尽可能多地使用 GUI 框架提供的内置功能,最终用户创建的应用程序的总运行时将最小化,并且只需要很少的额外外部内容即可生成有用且功能丰富的应用程序。GUI 框架运行时的大小仅为 1MB 左右。创建的应用程序也很可能非常小。所需的外部内容越少,应用程序就越小。

开发者

因为我是 GUI 框架的开发者,所以我能够掌握框架的所有功能,从而最大限度地利用它。我开发 PowerBasic 程序员使用的第三方工具已超过十年,我不仅非常了解我自己的工具,也非常了解 Windows API(WIN32)。我的第一项编程经验可以追溯到 1975 年,在 20 世纪 90 年代,我为当地企业编写了许多定制应用程序。例如,我有一个应收账款应用程序,一位客户已经使用了二十多年。在过去十年中,我的业务专注于为其他程序员构建软件工具,而不是为最终用户构建软件。我的一些工具(包括我的 GUI 框架)正在被我的客户用来构建各种商业和工业应用程序。查看我在公司博客中提到的一则示例:

GUI 框架是一些重要行业软件的后端

该博客重点介绍了我的一位客户推荐给我的一个视频,其中一家美国大型公司(雪佛龙)正在开发用于在水下 6000 英尺的管道上工作的复杂 ROV。该设备的部分硬件由我的客户开发,运行它的软件是使用我的 GUI 框架编写的。

作为一名为开发者编写工具而不是仅为最终用户的软件开发者,这证明了我的编程经验,因为我的客户的客户依赖于我编写的软件的质量。
   

© . All rights reserved.