惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

N
News and Events Feed by Topic
S
SegmentFault 最新的问题
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Last Week in AI
Last Week in AI
Jina AI
Jina AI
H
Help Net Security
C
Check Point Blog
aimingoo的专栏
aimingoo的专栏
MyScale Blog
MyScale Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Vercel News
Vercel News
L
LangChain Blog
Recorded Future
Recorded Future
F
Full Disclosure
Google DeepMind News
Google DeepMind News
Microsoft Security Blog
Microsoft Security Blog
I
InfoQ
GbyAI
GbyAI
B
Blog RSS Feed
T
The Blog of Author Tim Ferriss
Engineering at Meta
Engineering at Meta
A
About on SuperTechFans
M
MIT News - Artificial intelligence
爱范儿
爱范儿
V
V2EX
Microsoft Azure Blog
Microsoft Azure Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Y
Y Combinator Blog
B
Blog
WordPress大学
WordPress大学
Blog — PlanetScale
Blog — PlanetScale
W
WeLiveSecurity
MongoDB | Blog
MongoDB | Blog
Cloudbric
Cloudbric
N
News and Events Feed by Topic
The Cloudflare Blog
月光博客
月光博客
博客园 - 三生石上(FineUI控件)
有赞技术团队
有赞技术团队
D
DataBreaches.Net
博客园 - 【当耐特】
T
Troy Hunt's Blog
V
Visual Studio Blog
V2EX - 技术
V2EX - 技术
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - 司徒正美
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Google Online Security Blog
Google Online Security Blog
The GitHub Blog
The GitHub Blog

博客园 - Sephil

[小技巧] 倍数的向上取整和向下取整 WTL汉化版 Delphi 与 VC 共享接口和对象 DelphiXE泛型不能用类类型做为约束的另类解决方案 百度音乐下载工具 (最后更新: 2012-7-20) 为Delphi应用增加脚本支持 插件框架Extensible Framework for Delphi VC CListCtrl 第一列列宽自适应 WriteFile写磁盘扇区是87错误的原因 批量更改文件名的批处理文件 替代Windows运行功能的工具FastRun 关于 API 中返回字串的一些问题 BCB/Delphi2007 隐藏任务栏图标 OGA & WGA Crack 所有小工具 迅雷/快车/旋风地址转换器 oracle ora-01033和ora-00600错误 数独游戏 SudokuPuzzle 将文件夹映射为驱动器的工具
DirectUI for Delphi
Sephil · 2012-02-22 · via 博客园 - Sephil

最近公司开发的几个软件都需要支持皮肤,因此花了半个月做了一套皮肤引擎,也就是所谓的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