2068|2

1万

帖子

25

TA的资源

版主

楼主
 

“玩板”+在STM32F7DISC上重玩micropython(3) [复制链接]

 
本帖最后由 dcexpert 于 2020-2-17 22:19 编辑

图层(layer)

 

STM32F7DISC开发板的图形功能很丰富,其中一个很有特点的功能是图层(layer),layer的概念类似于photoshop中的图层。图层有很多用法,比如可以将图层作为缓冲区,先在一个图层中绘图,然后一次性快速显示;也可以设定图层的透明度(set_transparency),或者设定图层的显示窗口位置和大小等。受到RAM限制,目前仅支持2个图层。0是背景图层,1是前景图层。在图层1绘图时,如果颜色中设置了alpha通道,可以显示出透明色,和图层0进行叠加。

 

 

图层的主要函数:

  • layer_default_init(),初始化
  • select_layer(n),选择当前图层。
  • set_layer_window(n, x, y, width, height),设置一个图层窗口位置的大小
  • set_layer_visible(n, show),n代表图层,show代表显示或隐藏
  • set_transparency(n, tr),n代表图层,tr是透明度(0代表完全透明,255代表不透明)
  • set_layer_address(),设置图层地址,用法还不清楚

 

  • 因为缺少文档,一些功能是不断测试中摸索出来的,可能存在错误或者不准确的地方,欢迎大家指出。

 

具体使用方法请参考2楼的demo,特别注意使用alpha通道开窗和透明度的效果。

 


此内容由EEWORLD论坛网友dcexpert原创,如需转载或用于商业用途需征得作者同意并注明出处
 

点赞 关注
 
 

回复
举报

1万

帖子

25

TA的资源

版主

沙发
 

测试程序

from time import sleep_ms
import lcdF7D as lcd
import tchF7D as ts

MAX_X = 480
MAX_Y = 272

lcd.init()

lcd.select_layer(0)
lcd.set_text_color(0xFF)
lcd.fill_rect(50, 50, 200, 100)
lcd.set_text_color(0xFF00)
lcd.fill_rect(200, 80, 200, 100)
lcd.set_text_color(0xFF0000)
lcd.fill_rect(100, 100, 200, 100)
lcd.set_text_color(0xFF00)
lcd.set_font(20)
lcd.display_string_at(0, 0, 'rect show on the screen', 0)

lcd.select_layer(1)
lcd.set_text_color(0xFF0000)
lcd.set_font(24)
lcd.display_string_at(0, 60, 'no rect show on the screen', 0)
lcd.set_text_color(0x80, 0)
lcd.fill_rect(180, 90, 30, 30)
sleep_ms(2000)

lcd.set_layer_visible(1, 0)
sleep_ms(2000)

lcd.set_layer_visible(1, 1)

for i in range(255):
    lcd.set_transparency(1, 255 - i)
    sleep_ms(10)

for i in range(220):
    lcd.set_transparency(1, i)
    sleep_ms(10)

 

首先选择图层0,然后绘制3个不同颜色矩形。这时矩形是不会显示在屏幕上的。然后将图层1设置为不可见,就可以看到图层0的矩形了。再设置图层1可见,并逐步调整图层1的透明度。

 

 
 
 

回复

1万

帖子

25

TA的资源

版主

板凳
 
本帖最后由 dcexpert 于 2020-2-20 12:32 编辑

又一个测试图层显示的小程序,轮流在两个图层上print数字。

 

  • layer_print.py (869 Bytes, 下载次数: 0)
  • LCDF7D_PRINT.py (1.49 KB, 下载次数: 0)
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表