ESP32 常用的模块 framebuf 3.1.13
framebuf模块提供了一个通用的帧缓冲区,可用于创建位图图像,然后将其发送到显示屏。
## 类
##### framebuf.FrameBuffer(buffer, width, height, format, stride=width)
类说明:构造一个FrameBuffer对象。
```
buffer:缓冲区
必须足够大以包含由FrameBuffer指定的width,height和format
width :宽度,单位:像素
height:高度,单位:像素
format:FrameBuffer的格式
framebuf.MONO_VLSB、framebuf.RGB565、framebuf.GS4_HMSB、framebuf.MONO_HLSB、framebuf.MONO_HMSB
stride:水平线的像素数
默认为width
```
### 定义FrameBuffer
示例:
```
import framebuf
buffer = bytearray(16*8)
fb = framebuf.FrameBuffer(buffer, 128, 64, framebuf.MVLSB)
```
### 函数
#### 1. framebuf.FrameBuffer.fill(c)
函数说明:填充指定颜色。
```
c:数值范围根据颜色格式来确定
```
示例:
```
fb.fill(1)
```
#### 2. framebuf.FrameBuffer.pixel(x, y[, c])
函数说明: 画点。
```
x,y:点坐标(x, y)
c :点颜色
```
#### 3.framebuf.FrameBuffer.hline(x, y, w, c)
函数说明: 画水平线。
```
x,y:水平线起始点坐标(x, y)
w :线长
c :线的颜色
```
#### 4. framebuf.FrameBuffer.vline(x, y, h, c)
函数说明: 画垂直线。
```
x,y:垂直线的起始点坐标(x, y)
h :垂直线的高度
c :线的颜色
```
#### 5. framebuf.FrameBuffer.line(x1, y1, x2, y2, c)
函数说明: 画任意方向的线。
```
x1,y1:线的始点坐标(x1, y1)
x2,y2:线的终点坐标(x2, y2)
c :线的颜色
```
#### 6. framebuf.FrameBuffer.rect(x, y, w, h, c)
函数说明: 画矩形。
```
x,y:矩形的起始点(x, y)
w :宽度
h :高度
c :矩形边的颜色
```
#### 7. framebuf.FrameBuffer.fill_rect(x, y, w, h, c)
函数说明: 画矩形,并以颜色填充它。
```
x,y:矩形起始点(x, y)
w :宽度
h :高度
```
#### 8. framebuf.FrameBuffer.scroll(xstep, ystep)
函数说明: 按照给定的向量(dx, dy)移动屏幕中的内容。
```
dx:水平方向移动的距离和方向
dx为正数时向右移动,为负数时向左移动
dy:垂直方向移动的距离和方向
dy为正数时向下移动,为负数时向下移动
```
示例:
```
fb.scroll(10,10)
```
#### 9. frameBuffer.text(s, x, y[, c =1])
函数说明: 写任意文本 。
```
s:要显示的字符串
x,y:字符串的坐标(x, y)
c:字符串颜色
```
**注意:**
文本的颜色默认值为1。所有字符的尺寸为8x8像素,目前无法更改字体。
#### 10. framebuf.FrameBuffer.blit(fbuf, x, y[, key ])
函数说明: 在当前FrameButter的指定坐标再创建一个FrameButter对象。如果指定了key值,则其对应的颜色是透明的:即不会画出与key指定的颜色相同的像素。若成功,则返回一个FrameBuffer对象。
```
fbuf:FrameBuffer对象
x,y:起始点坐标(x, y)
key:指定对应颜色为透明
```
示例:
```
buffer = bytearray (16*64)
fb1 = framebuf.FrameBuffer(buffer,128,64, framebuf.MVLSB)
fb2 = framebuf.FrameBuffer(buffer,128,64, framebuf.MVLSB)
fb2.blit(fb1,0,0)
```
### 宏
设置用于对颜色值进行编码的位数以及缓冲区中这些(二进制)位的布局。
* framebuf.MVLSB = 0
* framebuf.MONO_VLSB = 0 — 单色(1字节),定义1字节的bit位对应垂直方向的像素点
* framebuf.RGB565 = 1 — 红绿蓝(16位,5 + 6 + 5)颜色
* framebuf.GS4_HMSB = 2 — 灰度(4位)
* framebuf.MONO_HLSB = 3 — 单色(1位),定义1字节的bit位对应水平方向像素点
* framebuf.MONO_HMSB = 4 — 单色(1位),定义1字节中bit位对应水平方向的像素点
页:
[1]