发新帖本帖赏金 5.00元(功能说明)我要提问
返回列表
打印
[应用相关]

自己写的GUI

[复制链接]
楼主: 过招铁是傻
手机看帖
扫描二维码
随时随地手机跟帖
41
不错,谢谢楼主的分享

21ic.com.png (837 Bytes )

21ic.com.png

使用特权

评论回复
42
幸福至上| | 2015-12-30 10:53 | 只看该作者
过招铁是傻 发表于 2015-12-30 10:46
嗯,我在实现功能的时候也会慢慢加注释,方便大家理解,技术比较成熟了的话可以写文档,现在核心的功能都 ...

哦,那还要加油啊,我也是初用STM32,GUI也想要弄一下,看楼主都在github上建立项目了,看来走在我前面一些哦。一起都琢磨看看。;)

使用特权

评论回复
43
过招铁是傻|  楼主 | 2015-12-30 10:59 | 只看该作者
幸福至上 发表于 2015-12-30 10:53
哦,那还要加油啊,我也是初用STM32,GUI也想要弄一下,看楼主都在github上建立项目了,看来走在我前面一 ...

GitHub就是好奇弄得,之前备份都用网盘,发现这货方便多了,于是果断GitHub。现在有个问题就是我要进行算法优化,不知道有么有现成的套路或方法,自己探索比较慢,不知道算法的书能不能给点灵感。

使用特权

评论回复
44
幸福至上| | 2015-12-30 11:08 | 只看该作者
过招铁是傻 发表于 2015-12-30 10:59
GitHub就是好奇弄得,之前备份都用网盘,发现这货方便多了,于是果断GitHub。现在有个问题就是我要进行算 ...

GitHub比较适用于开源项目吧?ucGUI比较成熟,就是不开源,楼主可以先看下其他人的博客,帖子,框架和具体功能都很重要啊。

使用特权

评论回复
45
幸福至上| | 2015-12-30 11:09 | 只看该作者
过招铁是傻 发表于 2015-12-30 10:59
GitHub就是好奇弄得,之前备份都用网盘,发现这货方便多了,于是果断GitHub。现在有个问题就是我要进行算 ...

另原子的战舰开发板似乎有一些GUI的视频教程,可以参考下。

使用特权

评论回复
46
过招铁是傻|  楼主 | 2015-12-30 11:20 | 只看该作者
幸福至上 发表于 2015-12-30 11:09
另原子的战舰开发板似乎有一些GUI的视频教程,可以参考下。

我的项目就是自己写的GUI库啊,我放到GitHub上就是要开源自己的库。说起资料,GUI核心原理的东西我也不是找了一天两天了,就是难找啊,我这个GUI的内核架构跟UC/GUI有很大不同,而且UC/GUI不能很好的支持透明,也没法参考了。

使用特权

评论回复
47
过招铁是傻|  楼主 | 2015-12-30 14:37 | 只看该作者
我感觉这个帖子的标题不够吸引人啊,是不是GUI主题的东西太多了啊?

使用特权

评论回复
48
幸福至上| | 2015-12-30 15:03 | 只看该作者
过招铁是傻 发表于 2015-12-30 14:37
我感觉这个帖子的标题不够吸引人啊,是不是GUI主题的东西太多了啊?

会做的不想说,不会做的又觉得难度太高,没啥好说的。觉得能找到一两个有同样志向的已然不错了。

使用特权

评论回复
49
过招铁是傻|  楼主 | 2015-12-30 15:23 | 只看该作者

RE: 自己写的GUI

幸福至上 发表于 2015-12-30 15:03
会做的不想说,不会做的又觉得难度太高,没啥好说的。觉得能找到一两个有同样志向的已然不错了。 ...

哈哈,我也是懒人,一直没写文档,过段时间就写点东西,方便感兴趣的朋友了解这个GUI的实现,如果有兴趣可以加入我的项目。不过有时间去写这种中间件的人确实少,一般做东西都会选择移植emWin。

使用特权

评论回复
50
幸福至上| | 2015-12-30 15:55 | 只看该作者
过招铁是傻 发表于 2015-12-30 15:23
哈哈,我也是懒人,一直没写文档,过段时间就写点东西,方便感兴趣的朋友了解这个GUI的实现,如果有兴趣 ...

我也比较感兴趣,不过没这方面基础,不知能否帮上忙,另还不太会用github.

使用特权

评论回复
51
过招铁是傻|  楼主 | 2015-12-30 16:48 | 只看该作者
幸福至上 发表于 2015-12-30 15:55
我也比较感兴趣,不过没这方面基础,不知能否帮上忙,另还不太会用github.  ...

这个不要紧,GitHub我也是第一次用,其实最关键的还是一些底层的东西,包括数据结构,算法,计算机图形学,或者还有美工,还有写文档,关于GUI的话资料确实难找(不是说基于现成的库的应用,而是GUI的实现原理),这个GUI的代码几乎都是我摸索出来的。另外,需要对多任务系统由一定的了解,需要对线程进行保护。还有写程序必须规范,否者代码的可移植性就会很差。

使用特权

评论回复
52
init_大学物理| | 2015-12-30 16:52 | 只看该作者
牛叉               

使用特权

评论回复
53
过招铁是傻|  楼主 | 2015-12-30 16:55 | 只看该作者
GUI(我的GUI)的核心就是窗口管理器(WM),窗口管理器维护一系列的窗口,这些窗口复位父子兄弟——它们于是构成了一颗树(我叫它窗口树),因此WM实际上是维护一颗窗口树,窗口树是一颗有序树,这也就体现了窗口的Z序,窗口的显示基于Z序,而为了避免因为窗口的遮盖关系而重复绘制屏幕的同一区域,我使用裁剪算法来确定窗口的精确区域——一系列的矩形,在绘制某个窗口时,绘图函数只会在这些矩形区域内绘制,这就避免了重复绘制,最后按照窗口树的顺序遍历,就能实现GUI的绘制,但是,引入透明之后,事情变得复杂了许多,以下是目前我对透明窗口的处理方式:

NKLRK9`{TSTL030U(]{W8}I.png (144.21 KB )

NKLRK9`{TSTL030U(]{W8}I.png

使用特权

评论回复
54
过招铁是傻|  楼主 | 2015-12-30 17:04 | 只看该作者
值得说一下的是,窗口树作为一颗树,对它的操作使用递归是很自然的,我最早的程序就是递归,但是递归的效率极低,并且容易让单片机的堆栈溢出(30级父子关系的窗口的遍历在STM32F429上就很占用堆栈了,经常导致堆栈溢出),递归效率低,很大程度上是重复计算导致的,所以原则上是不能使用递归的。GUI的另一部分关键算法是有关矩形的操作,包括矩形求交,求并,判断相交之类,他们几乎涉及GUI在窗口管理器之下的所有行为,是GUI的基本运算。矩形计算的重要作用是约束绘图函数的行为(比如让画线函数只在一个要求的区域里显示,而不能超出)。

使用特权

评论回复
55
lvyuan111| | 2015-12-30 17:06 | 只看该作者
厉害啊楼主!~

使用特权

评论回复
56
yklstudent| | 2015-12-30 18:04 | 只看该作者
给楼主32个赞

使用特权

评论回复
57
xuxuyi26| | 2015-12-30 18:11 | 只看该作者
厉害~

使用特权

评论回复
58
幸福至上| | 2015-12-30 23:10 | 只看该作者
过招铁是傻 发表于 2015-12-30 16:48
这个不要紧,GitHub我也是第一次用,其实最关键的还是一些底层的东西,包括数据结构,算法,计算机图形学 ...

嗯嗯,正在github上看你这个项目。。。:lol先研究下

使用特权

评论回复
59
jianhua5ok1| | 2015-12-31 09:21 | 只看该作者
楼主牛啊。可惜我水平有限啊。只能仰望了。

使用特权

评论回复
60
加油吧小鱼儿| | 2015-12-31 09:53 | 只看该作者
很不错哦~

使用特权

评论回复
发新帖 本帖赏金 5.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则