framebuf — 缓冲区操作

这个模块提供了一个通用的帧缓冲区,可以用来创建位图图像,然后可以将位图图像发送到显示器。.

class FrameBuffer

FrameBuffer类提供了像素缓存,可以用来绘制像素、直线、矩形、文本甚至其他FrameBuffer。它在显示器显示时时非常有用。

For example:

import framebuf

# FrameBuffer needs 2 bytes for every RGB565 pixel
fbuf = 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 足够存放所有像素参数的缓冲区.
  • width FrameBuffer宽度使用像素的单位
  • height FrameBuffer高度使用像素的单位
  • format 指定缓冲区的存放像素的类型.
  • stride 水平线之间的像素的数目.默认是等于width. an increased step size.

必选指定有效的 buffer, width, height, format 及 可用的 stride. 无效的 buffer 大小或者尺寸将会引起不可预料的错误.

绘制基本形状

下面方法可以利用FrameBuffer绘制不同的形状.

FrameBuffer.fill(c)

用指定的颜色填充整个FrameBuffer.

FrameBuffer.pixel(x, y[, c])

如果 c 没有给定,那就是获取该坐标的颜色值. If c is given, set the specified pixel to the given color.

FrameBuffer.hline(x, y, w, c)
FrameBuffer.vline(x, y, h, c)
FrameBuffer.line(x1, y1, x2, y2, c)

根据提供的坐标参数绘制一条直线,宽度为一个像素. line 两个坐标之间绘制一条直线. hlinevline 分别绘制水平和垂直线。

FrameBuffer.rect(x, y, w, h, c)
FrameBuffer.fill_rect(x, y, w, h, c)

根据指定的位置和大小,用颜色c绘制矩形. rect 绘制空心矩形,宽度为1个像素. fill_rect 实心矩形.

绘制文字

FrameBuffer.text(s, x, y[, c])

写入字符串 s 到FrameBuffer,使用左上坐标系(和计算机屏幕一样).文字的颜色可以使用c来指定,默认为1.字符大小为8*8像素,暂时不支持改变字体.

其他的方法

FrameBuffer.scroll(xstep, ystep)

使用指定的步距移动FrameBuffer的内容.注意这可能会在FrameBuffer留下颜色.

FrameBuffer.blit(fbuf, x, y[, key])

在当前的FrameBuffer绘制另一个FrameBuffer的内容.如果指定了key,它将被看作透明色,所有相同的颜色的像素将不会被绘制出来.

在不同的颜色模式下也可以使用这个方法,但是因为格式不匹配,最终的颜色可能不是逾期的.

常量

framebuf.MONO_VLSB

单色 (1-bit) 格式,一个字节表示8个相邻的垂直像素,下一个字节表示随后的8个垂直像素,直到底部:然后从上边下一行开始,每个字节的低位在前.

framebuf.MONO_HLSB

单色(1-bit)颜色格式,每个字节的低位在前(bit 0).和上一条类似只是表示水平像素.

framebuf.MONO_HMSB

单色(1位)颜色格式,这定义了一个映射,其中一个字节中的位是水平映射的。每个字节占用8个水平像素,最左边的是第7位。方法之前,后续字节出现在连续的水平位置到达最右边的边一行将呈现更多低的字节像素.

framebuf.RGB565

红绿蓝(16-bit, 分别占用5,6,5bit) 颜色格式

framebuf.GS2_HMSB

灰度 (2-bit)颜色格式

framebuf.GS4_HMSB

灰度 (4-bit)颜色格式

framebuf.GS8

灰度 (8-bit)颜色格式