搜索
bottom↓
回复: 32

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

[复制链接]

出0入0汤圆

发表于 2010-12-24 14:36:50 | 显示全部楼层 |阅读模式
这两天去EMWIN那里看了下,现在的UCGUI/EMWIN可以支持圆角的窗口和皮肤了,真是太令人流口水了!!
各位高手有谁可以对这两种功能的实现并结合UCGUI现有的代码,谈谈想法!
特别是皮肤的实现真是个好东西!唉!只有眼馋的份!

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


(原文件名:emWin_samples_MEMDEV_ListwheelEffects.png)


(原文件名:emWin_samples_SKINNING_NestedModal.png)

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2010-12-24 14:40:45 | 显示全部楼层
圆角实现不难,只要在矩形的四个角画圆弧就是。

出0入0汤圆

 楼主| 发表于 2010-12-24 15:15:28 | 显示全部楼层
呵呵,不会这么简单的吧,你的上层窗口画弧了,那底层的背景窗口有关圆角的某些部分就得显示出来,如果不是从剪切方面去处理,
那只有让所的圆角的窗口都是透明的,这样可以直接在WM_PAINT画弧了,但如果这样效率是太差了,我看了下评估
的测试代码貌似不这样做的!!

出0入0汤圆

 楼主| 发表于 2010-12-24 15:25:02 | 显示全部楼层
不过我倒是想到一种方法可以实现圆角窗口,而且不用设置此圆角窗口为透明属性。
我的想法如下:

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

各位怎么看!!

出0入0汤圆

发表于 2011-4-8 11:10:44 | 显示全部楼层
LZ最终实现到哪步了?

出0入0汤圆

 楼主| 发表于 2011-7-13 13:30:09 | 显示全部楼层
呵呵,最终还是得使用UCGUI提供的透明属性!
即设置窗口透明属性,直接画圆角。

不知各位有没有搞半透明效果的!!

出0入0汤圆

 楼主| 发表于 2011-7-13 13:33:36 | 显示全部楼层
不过透明半透明的效果太耗时,对于像STM32F103x的MCU
驱动TFT感觉还是有些吃力,最近想搞个STM32F2用120MHZ
的速度来跑UCGUI!

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

出0入0汤圆

发表于 2011-8-19 18:03:06 | 显示全部楼层
本人经过一个人礼拜的努力,终于通过修改剪切过程实现了圆角窗口,不需要设置透明属性,大家只要修改WM.C就可以了,等有空了把源码发上来供大家参考。

出0入0汤圆

发表于 2011-8-19 18:33:26 | 显示全部楼层
关注~~

出0入0汤圆

发表于 2011-8-20 22:49:13 | 显示全部楼层
明天先发几张截图上来。

出0入0汤圆

发表于 2011-8-24 10:52:50 | 显示全部楼层
力顶

出0入0汤圆

发表于 2011-8-26 19:42:45 | 显示全部楼层
期待...

出0入0汤圆

 楼主| 发表于 2011-9-2 15:33:04 | 显示全部楼层
回复【7楼】33041319  
-----------------------------------------------------------------------

不知结果如何,怎不见源码发上来!!

出0入0汤圆

发表于 2011-9-2 16:53:10 | 显示全部楼层
厉害。

出0入0汤圆

发表于 2011-9-14 09:04:06 | 显示全部楼层
先上传一张图片 ,源码等忙完项目整理一下上传

(原文件名:IMAG0039.jpg)

出0入0汤圆

发表于 2011-9-14 09:14:01 | 显示全部楼层
这个要支持一下,另外问一下3.98中加入的jpeg是什么功能?

出0入0汤圆

发表于 2011-9-14 12:42:04 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-9-14 18:21:28 | 显示全部楼层
回复【14楼】33041319
-----------------------------------------------------------------------

jpg图片解码并显示

出0入0汤圆

发表于 2011-9-14 18:47:08 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-9-14 18:47:19 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2011-10-14 10:04:44 | 显示全部楼层
回复【14楼】33041319  
-----------------------------------------------------------------------
不知这个BUTTON是用图片做的背景,还是Alpha混合做的!

期待你的圆角窗口的实现原理!

出0入0汤圆

发表于 2011-11-30 20:28:45 | 显示全部楼层
不错,有时间研究一下。

出0入0汤圆

发表于 2012-7-17 13:22:12 | 显示全部楼层
楼主的问题俺也想知道,呵呵!

出0入0汤圆

发表于 2012-7-25 15:00:38 | 显示全部楼层
期待后面的过程

出0入0汤圆

发表于 2013-5-14 18:06:52 | 显示全部楼层
clingos 发表于 2010-12-24 15:25
不过我倒是想到一种方法可以实现圆角窗口,而且不用设置此圆角窗口为透明属性。
我的想法如下:

在ucGUI 中,好像是当前有效窗口第一个绘制,然后是父窗口和父窗口的同胞窗口,那怎么做到最后绘制这个圆角?

出0入0汤圆

发表于 2013-5-14 19:14:56 | 显示全部楼层
UCGUI的圆角窗口是通过MEMDEV设备来实现的,也就是说窗口圆角的部分绘图是使用MEMDEV来绘,
完成后再做窗口其它的部分的绘图。这种方法避免了使用透明窗口时,当无效透明窗口其父窗口也得重画。

如果UCGUI即支持即时剪切域生成,也支持类似MINIGUI的剪切域产生方式,就无敌了!
这样可以根据内存的大小来提高性能!

出0入0汤圆

发表于 2013-6-17 22:54:33 | 显示全部楼层
记下,正好用的上,谢了

出0入0汤圆

发表于 2013-8-2 17:24:16 | 显示全部楼层
33041319 发表于 2011-9-14 09:04
先上传一张图片 ,源码等忙完项目整理一下上传

(原文件名:IMAG0039.jpg)

请问下,你们的UCGUI的空间圆角怎么实现的呢?有这部分的代码吗?

出0入0汤圆

发表于 2013-8-15 19:56:49 | 显示全部楼层
等这帖子下文很久了,感觉被“耍”,哈哈

出0入0汤圆

发表于 2013-8-19 13:59:49 | 显示全部楼层
说好的源码呢?

出0入0汤圆

发表于 2014-9-13 20:31:53 | 显示全部楼层
bucuo

出0入0汤圆

发表于 2017-5-8 19:57:43 | 显示全部楼层
33041319 发表于 2011-9-14 09:04
先上传一张图片 ,源码等忙完项目整理一下上传

(原文件名:IMAG0039.jpg)

谢谢你给我们指了一条路

出0入0汤圆

发表于 2018-10-31 22:49:54 | 显示全部楼层
33041319 发表于 2011-8-19 18:03
本人经过一个人礼拜的努力,终于通过修改剪切过程实现了圆角窗口,不需要设置透明属性,大家只要修改WM.C就 ...

可以提供代码吗?有偿也行.可以的话站内消息联系,谢谢
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-18 02:48

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表