Toggle navigation
首页
问答
文章
话题
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread一般讨论
RT-Thread的图形界面组件
发布于 2008-06-01 21:46:44 浏览:5470
RT-Thread的图形界面组件:RTGUI RTGUI的结构依然采用的是C/S结构,这样做的目的也是为了以后方便扩展到微内核结构。但和传统的C/S结构非常不相同的是,它采用的是 服务端:仅仅维护各面板、窗体的位置信息;及鼠标、键盘、触摸点事件的派发。 客户端:在自己的可显示区域上进行直接的、非常直接的屏幕直接写屏。 而对嵌入式系统着重优化的地方,引入面板概念 面板,一个完整的屏幕是由数个相互不重叠的面板构成,在面板自己所属的可视区域内,绘图几乎可以畅通无阻的自由绘画:独占可视区域。 但窗口的概念依然被保留下来了,并取其精华去其糟粕: 窗口永远位于面板的上方:为消息窗口保留、为输入法状态条保留 窗口几乎无最大化最小化的概念:因为嵌入式设备有限的面积决定了窗口的大或小并不是十分重要 
查看更多
2
个回答
默认排序
按发布时间排序
bernard
2008-06-13
This guy hasn't written anything yet
[b]RTGUI的Alpha绘图支持[/b] RTGUI Alpha支持构思了很久。因为Alpha绘图(即透明模式绘图)是现代GUI的基本特性之一,其视觉特性效果显著,RTGUI对alpha的支持是必需具备的。 [list][b]Alpha混合操作[/b][/list:u] 原像素点:pixel_old,它由r, g, b三种色彩构成 欲进行Alpha混合绘制的像素点:pixel,它除了r, g, b之外,应该指定alpha的效果是多少,例如说执行80%的透明效果,alpha=0.8 那么要实现alpha混合绘制,应该在原来位置上填充的像素点为: [code]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) [/code] [list][b]RTGUI的Alpha支持[/b][/list:u] RTGUI的实现和传统的GUI有着非常大的差别,其差别体现在:RTGUI虽然也采用客户端/服务端模式的体系结构,但它把传统服务端执行的绘图全部放到了客户端执行,而服务端仅仅保留客户端窗口信息及其剪切相关的信息,即客户端仅仅在自己可视剪切域中进行绘图。这样就会产生一个问题,对一个窗口,如果它被其他窗口所剪切,那么被剪切的部分相对于原窗口将留下一个空洞(因为这块空洞是由剪切窗口负责绘图),如果上层窗口需要实现Alpha效果,那么是不可能的,因为按照上面的alpha绘图公式,pixel_old像素点不能获得。 为了在RTGUI中加入Alpha支持,RTGUI服务端中将加入相关信息以指明哪个窗口需要执行透明操作(RTGUI中view应该不存在这种问题,而且如何实现alpha将完全是view客户端的事情)。因为RTGUI服务端会保存有所有窗口的列表(可视窗口列表和隐藏窗口列表,可视窗口列表也即Z序),这个窗口列表的节点中将新增一项field以指明此窗口是否是透明窗口。 [list][b]涉及透明窗口的操作[/b][/list:u] [list] 剪切域更新,目前的实现是从最上端的窗口一直更新到最底端的窗口。加入alpha后,那么当遇到是透明窗口时:(1)在透明窗口上的窗口剪切域需要发送给透明窗口(因为针对透明窗口,其上层的非透明窗口是能够显示并不透明);(2)透明窗口之下的窗口不应包含透明窗口的剪切域。[/*:m] 当一个窗口更新时(窗口绘图完成时),如果此窗口之上存在透明窗口,需要发送Paint事件给透明窗口通知它需要重新刷新,即从新绘制透明窗口。[/*:m] 透明窗口绘图时,先绘图到自己的dc buffer中,然后从dc buffer统一刷新到dc hardware。[/*:m][/list:u]
撰写答案
登录
注册新账号
关注者
0
被浏览
5.5k
关于作者
bernard
This guy hasn't written anything yet
提问
414
回答
5811
被采纳
48
关注TA
发私信
相关问题
1
有关动态模块加载的一篇论文
2
最近的调程序总结
3
晕掉了,这么久都不见layer2的踪影啊
4
继续K9ii的历程
5
[GUI相关] FreeType 2
6
[GUI相关]The RFB Protocol中文版
7
[GUI相关]嵌入式系统中文输入法的设计
8
20081101 RT-Thread开发者聚会总结
9
嵌入式系统基础
10
linux2.4.19在at91rm9200 上的寄存器设置
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
五分钟玩转RT-Thread新社区
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
国产MCU移植系列教程汇总,欢迎查看!
最新文章
1
关于时间片调度算法issue的分析与解决
2
【社区福利】6月积分兑好礼(机械键盘、开发板、小风扇...)
3
[ART smart 开发板] SDL测试
4
【先楫HPM6750测评】RT-Thread SDIO驱动和文件系统
5
N9H30 HMI开发板触摸屏误触发问题,及解决办法
热门标签
RT-Thread Studio
串口
LWIP
FinSH
Env
ART-Pi
AT
SPI
Bootloader
USB
Hardfault
CAN
文件系统
studio
DMA
RT-Thread
线程
Nano
stm32
ota
MQTT
SCons
rtthread
ESP8266
freemodbus
软件包
I2C
UART
flash
cubemx
RTC
定时器
W5500
FAL
BSP
rt-smart
rtt
PWM
AB32VG1
ADC
编译报错
msh
socket
SDIO
C++
dfs
at_device
SFUD
MicroPython
RT-Studio
本月问答贡献
小小李sunny
38
个答案
10
次被采纳
出出啊
33
个答案
8
次被采纳
lchnu
11
个答案
5
次被采纳
红枫
23
个答案
4
次被采纳
crystal266
19
个答案
4
次被采纳
本月文章贡献
张世争
11
篇文章
30
次点赞
吉利咕噜2022
7
篇文章
12
次点赞
xusiwei1236
3
篇文章
10
次点赞
crystal266
3
篇文章
7
次点赞
Liutao
3
篇文章
4
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部