framebuf — 帧缓冲区操作¶
警告
虽然这个基于 MicroPython 的库可能可用于某些 CircuitPython 版本,但它不受支持,并且其功能在未来可能会发生重大变化。随着 CircuitPython 的不断发展,它可能会更改以更紧密地符合相应的标准 Python 库。如果您依赖它当前提供的任何非标准功能,您以后可能需要更改您的代码。
该模块提供了一个通用帧缓冲区,可用于创建位图图像,然后可以将其发送到显示器。
类 FrameBuffer¶
FrameBuffer 类提供了一个像素缓冲区,可以使用像素、线条、矩形、文本甚至其他 FrameBuffer 来绘制它。它在为显示器生成输出时很有用。
例如:
import framebuf
# FrameBuffer needs 2 bytes for every RGB565 pixel
fbuf = framebuf.FrameBuffer(bytearray(10 * 100 * 2), 10, 100, framebuf.RGB565)
fbuf.fill(0)
fbuf.text('MicroPython!', 0, 0, 0xffff)
fbuf.hline(0, 10, 96, 0xffff)
构造函数¶
- 
class framebuf.FrameBuffer(buffer, width, height, format, stride=width, /)¶
- 构造一个 FrameBuffer 对象。参数是: - buffer 是一个具有缓冲协议的对象,该协议必须足够大以包含由 FrameBuffer 的宽度、高度和格式定义的每个像素。 
- width 是 FrameBuffer 的宽度(以像素为单位) 
- height 是 FrameBuffer 的高度(以像素为单位) 
- format指定了 FrameBuffer 中使用的像素类型;允许的值列在下面的常量下。这些设置用于编码颜色值的位数以及这些位在缓冲区中的布局。在将颜色值 c 传递给方法的情况下,c 是一个小整数,其编码取决于 FrameBuffer 的格式。 
- stride是 FrameBuffer 中每条水平像素线之间的像素数。这默认为宽度,但在另一个更大的 FrameBuffer 或屏幕中实现 FrameBuffer 时可能需要调整。所述缓冲器的大小必须容纳增加的步长大小。 
 - 必须指定有效的缓冲区、宽度、高度、格式和可选的stride。无效的缓冲区大小或维度可能会导致意外错误。 
绘制原始形状¶
以下方法将形状绘制到 FrameBuffer 上。
- 
FrameBuffer.fill(c)¶
- 用指定的颜色填充整个 FrameBuffer。 
- 
FrameBuffer.pixel(x, y[, c])¶
- 如果未给出c,则获取指定像素的颜色值。如果给定c,则将指定像素设置为给定颜色。 
- 
FrameBuffer.hline(x, y, w, c)¶
- 
FrameBuffer.vline(x, y, h, c)¶
- 
FrameBuffer.line(x1, y1, x2, y2, c)¶
- 使用给定的颜色和 1 像素的厚度从一组坐标中绘制一条线。该 - line方法将线绘制到第二组坐标,而- hline和- vline方法分别绘制水平线和垂直线直至给定长度。
- 
FrameBuffer.rect(x, y, w, h, c)¶
绘图文本¶
- 
FrameBuffer.text(s, x, y[, c])¶
- 使用坐标作为文本的左上角将文本写入 FrameBuffer。文本的颜色可以由可选参数定义,否则默认值为 1。所有字符的尺寸均为 8x8 像素,目前无法更改字体。 
其他方法¶
- 
FrameBuffer.scroll(xstep, ystep)¶
- 将 FrameBuffer 的内容移动给定的向量。这可能会在 FrameBuffer 中留下先前颜色的足迹。 
- 
FrameBuffer.blit(fbuf, x, y[, key])¶
- 在给定坐标处的当前帧缓冲区之上绘制另一个帧缓冲区。如果指定了键,则它应该是一个颜色整数,相应的颜色将被视为透明:不会绘制具有该颜色值的所有像素。 - 此方法适用于使用不同格式的 FrameBuffer 实例,但由于颜色格式不匹配,结果颜色可能出乎意料。 
常数¶
- 
framebuf.MONO_VLSB¶
- 单色(1 位)颜色格式 这定义了一种映射,其中字节中的位垂直映射,位 0 最靠近屏幕顶部。因此,每个字节占据 8 个垂直像素。后续字节出现在连续的水平位置,直到到达最右边。在从最左边缘开始的位置呈现更多字节,低 8 个像素。 
- 
framebuf.MONO_HLSB¶
- 单色(1 位)颜色格式 这定义了一种映射,其中字节中的位被水平映射。每个字节占据 8 个水平像素,第 7 位在最左边。后续字节出现在连续的水平位置,直到到达最右边。下一行呈现更多字节,低一个像素。 
- 
framebuf.MONO_HMSB¶
- 单色(1 位)颜色格式 这定义了一种映射,其中字节中的位被水平映射。每个字节占据 8 个水平像素,位 0 位于最左边。后续字节出现在连续的水平位置,直到到达最右边。下一行呈现更多字节,低一个像素。 
- 
framebuf.RGB565¶
- 红绿蓝(16位,5+6+5)颜色格式 
- 
framebuf.GS2_HMSB¶
- 灰度(2 位)颜色格式 
- 
framebuf.GS4_HMSB¶
- 灰度(4 位)颜色格式 
- 
framebuf.GS8¶
- 灰度(8 位)颜色格式