• DirectUI for Delphi


    最近公司开发的几个软件都需要支持皮肤,因此花了半个月做了一套皮肤引擎,也就是所谓的Direct UI,即控件都是画在窗体上的,只有容器窗体是有实际句柄的,子控件并非标准的Window。

    说说这套引擎的几个特性

    1. 绘制效率尚可,至少图片很多时也没有发现有闪烁;
    2. 支持的常用图片格式(BMP/JPG/PNG/GIF/ICON等),并支持图片透明;
    3. 图片延迟载入,避免占用内存资源;
    4. 皮肤支持多种存储格式,如ZIP打包、EXE内嵌资源等,要扩充新的格式也很方便;
    5. 容器基于Delphi的TWinControl,例如你在窗口上放置一个Panel,只在这个Panel里使用皮肤;
    6. 支持同时使用多个皮肤,比如Form1用一种皮肤,Form2用另一种;
    7. 支持动态切换皮肤;
    8. 可以和Delphi的TWinControl混用,不会互相影响,但不支持TGraphicControl(这个是当然的哈哈);
    9. 大部分控件都支持样式,即不同的状态下使用不同字体、背景、边框等。一般的DirectUI中,控件的样式都只是简单的设置一张图片,对控件的不同状态的显示需要用代码控制显示。另外引擎内置了多种边框、背景样式,尽可能减少用代码控制样式的可能;
    10. 灵活多样的图片绘制方式,省去你剪裁图片的无聊工作;
    11. 类似于Delphi,这套引擎也支持不可见的Component,比如用来管理控件提示(Hint)的组件;
    12. 不错的布局系统,类似于TControl的Anchors,自动左对齐、右对齐、居中都很容易实现,不需要代码控制。另外也提供了垂直布局、水平布局、表格布局、排列布局等自动布局控件;
    13. 支持异形控件,即非矩形的控件。支持控件背景透明(对DirectUI来说,这个是很容易的 :)
    14. 支持控件模板,相同样式的控件再也不需要繁琐的定义了;
    15. 使用方便,拖两个控件到窗体上,设置下属性,就可以运行了。

    后续计划:

    1. 配合我的插件框架,支持使用插件动态扩展;
    2. 增加脚本支持,彻底将UI与业务逻辑分离;
    3. 增加绘图引擎。面前绘图是基于GDI的,想增加DirectX的支持;
    4. 支持色调切换,支持动态效果。

     缺点:

    没有设计器,设计UI是件繁琐无趣的工作。。。

    上几张图吧,不是很复杂的UI

  • 相关阅读:
    命令用法示例
    Elastic:用Docker部署Elastic栈
    Elastic:使用Heartbeat进行Uptime监控
    Elastic:如何在一个机器上同时模拟多个node
    Elastic 使用索引生命周期管理实现热温冷架构
    Logstash:运用jdbc_streaming来丰富我们的数据
    Logstash:多个配置文件(conf)
    Logstash:处理多个input
    使用 Logstash 和 JDBC 确保 Elasticsearch 与关系型数据库保持同步
    Logstash:把MySQL数据导入到Elasticsearch中
  • 原文地址:https://www.cnblogs.com/sephil/p/DIRECTUI.html
Copyright © 2020-2023  润新知