图层(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(),设置图层地址,用法还不清楚
因为缺少文档,一些功能是不断测试中摸索出来的,可能存在错误或者不准确的地方,欢迎大家指出。
具体使用方法请参考demo,特别注意使用alpha通道开窗和透明度的效果。
代码: 全选
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)