framebuf
— 帧缓冲区操作¶
该模块提供一个可用于创建位图、可发送到显示器的通用帧缓冲区。
帧缓冲区类¶
帧缓冲区类提供一个像素缓冲区,此缓冲区可使用像素、线、矩形、椭圆、多边形、文本甚至其他帧缓冲区来绘制。此缓冲区可在生成显示器输出时发挥作用。
例如:
import framebuf
# FrameBuffer needs 2 bytes for every RGB565 pixel
fbuf = framebuf.FrameBuffer(bytearray(100 * 10 * 2), 100, 10, framebuf.RGB565)
fbuf.fill(0)
fbuf.text('MicroPython!', 0, 0, 0xffff)
fbuf.hline(0, 9, 96, 0xffff)
构造函数¶
- class framebuf.FrameBuffer(buffer, width, height, format, stride=width, /)¶
构建一个帧缓冲区对象。参数为:
buffer 缓冲区是一个带有缓冲区协议的对象,且其大小须足以容纳由宽度、高度和帧缓冲区定义的每个像素。
width 为以像素为单位的帧缓冲区的宽度
width 为以像素为单位的帧缓冲区的高度
format 指定在FrameBuffer中使用的像素类型;允许的值列在下面的常量下。这些设置了用于编码颜色值的位数以及这些位在 buffer 中的布局。在将颜色值c传递给方法的地方,c是一个小整数,其编码依赖于FrameBuffer的格式。
stride 是FrameBuffer中每个像素水平线之间的像素数。默认为 width ,但在另一个较大的FrameBuffer或屏幕中实现FrameBuffer时可能需要调整。 buffer 的大小必须适应增加的步长。
必须指定有效的*buffer*、width、height、format*和可选的*stride。无效的*缓冲区*大小或维度可能导致意外错误。
绘制原始形状¶
下面的方法将形状绘制到FrameBuffer上。
- FrameBuffer.fill(c)¶
使用指定颜色填满整个帧缓冲区。
- 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[, f])¶
在给定位置、按照给定大小和颜色绘制一个矩形。
可选的*f*参数可以设置为
True
以填充矩形。否则,只绘制一个像素的轮廓。
绘制文本¶
- FrameBuffer.text(s, x, y[, c])¶
使用坐标作为文本的左上角将文本写入FrameBuffer。文本的颜色可以通过可选参数定义,否则默认值为1。所有字符的尺寸为8x8像素,目前没有办法更改字体。
其他方法¶
- FrameBuffer.scroll(xstep, ystep)¶
将FrameBuffer的内容按给定向量移动。这可能会在FrameBuffer中留下之前颜色的痕迹。
- FrameBuffer.blit(fbuf, x, y, key=-1, palette=None)¶
在当前FrameBuffer上的给定坐标处绘制另一个FrameBuffer。如果指定了*key*,则它应该是一个颜色整数,相应的颜色将被视为透明:所有具有该颜色值的像素都不会被绘制。(如果指定了*palette*,则*key*与*palette*中的值进行比较,而不是直接与*fbuf*中的值进行比较。)
*palette*参数允许在具有不同格式的FrameBuffers之间进行blit。典型用途是将单色或灰度图标/图形渲染到彩色显示器上。*palette*是一个FrameBuffer实例,其格式是当前FrameBuffer的格式。*palette*的高度是一个像素,其像素宽度是源FrameBuffer中的颜色数。N位源的*palette*需要2**N个像素;单色源的*palette*将有2个像素,代表背景和前景颜色。应用程序为*palette*中的每个像素分配一个颜色。当前像素的颜色将是那个*palette*像素的颜色,其x位置是相应源像素的颜色。
常量¶
- 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位)颜色格式