有哪位高手来讲讲最新UCGUI的圆角窗口和皮肤的实现原理!!

2019-12-16 22:32发布

这两天去EMWIN那里看了下,现在的UCGUI/EMWIN可以支持圆角的窗口和皮肤了,真是太令人流口水了!!
各位高手有谁可以对这两种功能的实现并结合UCGUI现有的代码,谈谈想法!
特别是皮肤的实现真是个好东西!唉!只有眼馋的份!

噢还实现了Alpha混合的半透明效果!上传几个图片看看!!


(原文件名:emWin_samples_MEMDEV_ListwheelEffects.png)


(原文件名:emWin_samples_SKINNING_NestedModal.png)
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
32条回答
oldtom
1楼-- · 2019-12-16 23:44
圆角实现不难,只要在矩形的四个角画圆弧就是。
clingos
2楼-- · 2019-12-17 03:38
呵呵,不会这么简单的吧,你的上层窗口画弧了,那底层的背景窗口有关圆角的某些部分就得显示出来,如果不是从剪切方面去处理,
那只有让所的圆角的窗口都是透明的,这样可以直接在WM_PAINT画弧了,但如果这样效率是太差了,我看了下评估
的测试代码貌似不这样做的!!
clingos
3楼-- · 2019-12-17 06:05
不过我倒是想到一种方法可以实现圆角窗口,而且不用设置此圆角窗口为透明属性。
我的想法如下:

如果窗口不是矩形的话,那它的导角应该是知道的,可以根据这个导角计算出一个小矩形(A)每次
在绘画这个圆角窗口时都要先无效它的父母重绘这个矩形(A),然后也画这个圆角的窗口,这样不用
改代码就可以了!

各位怎么看!!
qiushui
4楼-- · 2019-12-17 06:26
LZ最终实现到哪步了?
clingos
5楼-- · 2019-12-17 11:38
 精彩回答 2  元偷偷看……
clingos
6楼-- · 2019-12-17 12:39
不过透明半透明的效果太耗时,对于像STM32F103x的MCU
驱动TFT感觉还是有些吃力,最近想搞个STM32F2用120MHZ
的速度来跑UCGUI!

不知用来做TFT显示效果如何?

一周热门 更多>