Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
rtgui
RT-Thread的图形界面组件
发布于 2008-06-01 21:46:44 浏览:6709
订阅该版
RT-Thread的图形界面组件:RTGUI RTGUI的结构依然采用的是C/S结构,这样做的目的也是为了以后方便扩展到微内核结构。但和传统的C/S结构非常不相同的是,它采用的是 服务端:仅仅维护各面板、窗体的位置信息;及鼠标、键盘、触摸点事件的派发。 客户端:在自己的可显示区域上进行直接的、非常直接的屏幕直接写屏。 而对嵌入式系统着重优化的地方,引入面板概念 面板,一个完整的屏幕是由数个相互不重叠的面板构成,在面板自己所属的可视区域内,绘图几乎可以畅通无阻的自由绘画:独占可视区域。 但窗口的概念依然被保留下来了,并取其精华去其糟粕: 窗口永远位于面板的上方:为消息窗口保留、为输入法状态条保留 窗口几乎无最大化最小化的概念:因为嵌入式设备有限的面积决定了窗口的大或小并不是十分重要 ![RTGUI.JPG](/uploads/53_6e734c0fc440ce48c68f8e94111319bf.jpg)
查看更多
2
个回答
默认排序
按发布时间排序
bernard
2008-06-13
这家伙很懒,什么也没写!
RTGUI的Alpha绘图支持 RTGUI Alpha支持构思了很久。因为Alpha绘图(即透明模式绘图)是现代GUI的基本特性之一,其视觉特性效果显著,RTGUI对alpha的支持是必需具备的。 [list]Alpha混合操作[/list:u] 原像素点:pixel_old,它由r, g, b三种色彩构成 欲进行Alpha混合绘制的像素点:pixel,它除了r, g, b之外,应该指定alpha的效果是多少,例如说执行80%的透明效果,alpha=0.8 那么要实现alpha混合绘制,应该在原来位置上填充的像素点为: ``` pixel_new.r = pixel_old.r * alpha + pixel.r * (1 - alpha) pixel_new.g = pixel_old.g * alpha + pixel.g * (1 - alpha) pixel_new.b = pixel_old.b * alpha + pixel.b * (1 - alpha) ``` [list]RTGUI的Alpha支持[/list:u] RTGUI的实现和传统的GUI有着非常大的差别,其差别体现在:RTGUI虽然也采用客户端/服务端模式的体系结构,但它把传统服务端执行的绘图全部放到了客户端执行,而服务端仅仅保留客户端窗口信息及其剪切相关的信息,即客户端仅仅在自己可视剪切域中进行绘图。这样就会产生一个问题,对一个窗口,如果它被其他窗口所剪切,那么被剪切的部分相对于原窗口将留下一个空洞(因为这块空洞是由剪切窗口负责绘图),如果上层窗口需要实现Alpha效果,那么是不可能的,因为按照上面的alpha绘图公式,pixel_old像素点不能获得。 为了在RTGUI中加入Alpha支持,RTGUI服务端中将加入相关信息以指明哪个窗口需要执行透明操作(RTGUI中view应该不存在这种问题,而且如何实现alpha将完全是view客户端的事情)。因为RTGUI服务端会保存有所有窗口的列表(可视窗口列表和隐藏窗口列表,可视窗口列表也即Z序),这个窗口列表的节点中将新增一项field以指明此窗口是否是透明窗口。 [list]涉及透明窗口的操作[/list:u] [list] 剪切域更新,目前的实现是从最上端的窗口一直更新到最底端的窗口。加入alpha后,那么当遇到是透明窗口时:(1)在透明窗口上的窗口剪切域需要发送给透明窗口(因为针对透明窗口,其上层的非透明窗口是能够显示并不透明);(2)透明窗口之下的窗口不应包含透明窗口的剪切域。[/*:m] 当一个窗口更新时(窗口绘图完成时),如果此窗口之上存在透明窗口,需要发送Paint事件给透明窗口通知它需要重新刷新,即从新绘制透明窗口。[/*:m] 透明窗口绘图时,先绘图到自己的dc buffer中,然后从dc buffer统一刷新到dc hardware。[/*:m][/list:u]
撰写答案
登录
注册新账号
关注者
0
被浏览
6.7k
关于作者
bernard
这家伙很懒,什么也没写!
提问
414
回答
5940
被采纳
76
关注TA
发私信
相关问题
1
柿饼ui设计器无法更新
2
rtgui/driver.h No such file
3
新版本中rtgui已经不再使用了,那我要使用rtgui的功能,应该怎么实现?
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
2
RT-Thread 发布 EtherKit开源以太网硬件!
3
rt-thread使用cherryusb实现虚拟串口
4
《C++20 图形界面程序:速度与渲染效率的双重优化秘籍》
5
《原子操作:程序世界里的“最小魔法单位”解析》
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
ota在线升级
UART
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
at_device
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
张世争
9
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
a1012112796
13
个答案
1
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
本月文章贡献
程序员阿伟
6
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
2
次点赞
ThinkCode
1
篇文章
1
次点赞
Betrayer
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部