Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
rtgui
RT-Thread的图形界面组件
发布于 2008-06-01 21:46:44 浏览:6437
订阅该版
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.4k
关于作者
bernard
这家伙很懒,什么也没写!
提问
414
回答
5913
被采纳
70
关注TA
发私信
相关问题
1
柿饼ui设计器无法更新
2
rtgui/driver.h No such file
3
新版本中rtgui已经不再使用了,那我要使用rtgui的功能,应该怎么实现?
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
机器人操作系统 (ROS2) 和 RT-Thread 通信
4
国产MCU移植系列教程汇总,欢迎查看!
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
VISION BOARD 第二弹 基础工程配置和点亮一个LED灯
2
musb移植问题记录【设备注册3次挂起】
3
关于使用CherryUSB时候使用外挂的usb phy 芯片配置的一点注意事项
4
【Vision Board 创客营】Vision Board上的ADC实践
5
FRDM-MCXN947 & RT-Thread的CAN实践——控制GM6020云台电机
热门标签
RT-Thread Studio
串口
LWIP
Env
SPI
Bootloader
AT
ART-Pi
Hardfault
CAN总线
FinSH
USB
文件系统
RT-Thread
DMA
SCons
线程
RT-Thread Nano
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
ota在线升级
WIZnet_W5500
I2C_IIC
UART
flash
cubemx
packages_软件包
freemodbus
潘多拉开发板_Pandora
PWM
定时器
ADC
BSP
中断
keil_MDK
编译报错
socket
MicroPython
GD32
msh
Debug
ulog
SDIO总线
SFUD
rt_mq_消息队列_msg_queue
C++_cpp
本月问答贡献
xiaorui
7
个答案
3
次被采纳
sakumisu
4
个答案
3
次被采纳
三世执戟
31
个答案
1
次被采纳
梦笑真美
18
个答案
1
次被采纳
踩姑娘的小蘑菇
14
个答案
1
次被采纳
本月文章贡献
Z_Y
2
篇文章
5
次点赞
Alipay
2
篇文章
3
次点赞
2345vor
2
篇文章
1
次点赞
比特饼干
1
篇文章
6
次点赞
Lu_盼盼
1
篇文章
3
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部