Arduino Adafruit GFX图形库介绍(三)- 图形基本元素


每个库对特定的显示器件有特定的构造函数和初始化函数,对于每种显示器件会在其教材中加以说明,有些会在其头文件中添加说明。下面的教材将不对特定的器件做出说明,而是对所有器件的共性的部分进行说明。

下面介绍的功能主要是作为样板,作为假设我们的显示器已经进行了声明并进行了初始化。查看例子代码来看如何真正使用。例如,如果我们打印print(1234.56),其实际的代码, 或许会看到是screen.print(1234.56)(如果我们将显示定义声明为screen)。

Drawing pixels(points)

画像素。开始我们先介绍基本的像素如何画出来。在单个点用特定的颜色在坐标点X和Y处画这个点。

void drawPixel(uint16_t x, uint16_t y, uint16_t color);

在这里插入图片描述

Drawing lines

画线

可以用两个坐标点画一条线。

void drawLine(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint16_t color)l

在这里插入图片描述

在这里插入图片描述

相对于垂直线和水平线,对此进行了优化。不用进行角度计算。

void drawFastVLine(uint16_t x0, uint16_t y0, uint16_t length, uint16_t color);
void drawFastHLine(uint8_t x0, uint8_t y0, uint8_t length, uint16_t color);

Rectangles

下一步,可以画和填充矩形和方形,画和填充按下面的步骤进行。对于每个X,Y,表示的是矩形左上角。用一个width表示宽度,一个height表示高度。这些计量的单位都是画像本身。drawRect()画矩形的外部,fillRect()用特定的颜色填充整个空间。

void drawRect(uint16_t x0, uint16_t y0, uint16_t w, uint16_t h, uint16_t color);
void fillRect(uint16_t x0, uint16_t y0, uint16_t w, uint16_t h, uint16_t color);

在这里插入图片描述

在这里插入图片描述

要创建一个填充的实体矩形,先用fillRect(), 再用drawRect()来 实现。

画圆圈 Circles

相似的,对圆形,也可以画一个圆圈,也可以填充,每个画圆圈的函数接受一个X,Y对参数,这个参数是圆圈的中心点,一个用像素表示的半径,还有一个颜色值。

void drawCircle(uint16_t x0, uint16_t y0, uint16_r, uint16_t color);
void fillCircle(uint16_t x0, uint16_t y0, uint16_t r, uint16_t color);

在这里插入图片描述

在这里插入图片描述

Rounded rectangle 圆角矩形

对于边角是圆形的矩形也有填充和画的功能。每个开始一个x和y定义点,一个宽度和高度,定义矩形的宽和高度,再有一个半径定义圆角的圆弧,最后是一个颜色值。

void drawRoundRect(uint16_t x0, uint16_t y0, uint16_t w, uint16_t h, uint16_t raduis, uint16_t color);
void fillRoundRect(uint16_t x0, uint16_t y0, uint16_t w, uint16_t h, uint16_t raduis, uint16_t color);

在这里插入图片描述
现在介绍一个额外的技巧,因为画圆的功能总是画与圆形相对应的圆,所以画出来的圆形的直径总是一个偶数。如果要画一个奇数值直径的圆(这会将圆心放在像素的中间。这可以用一个边角是圆弧的矩形来实现。给这个矩形的长度和高度一样,并且是奇数值,半径设置成高度及宽度值的一半。

Triangles 三角形

对于三角形,同样有画和填充的功能,每个函数都需要7个参数,三个X,Y定义三角形的三个顶点,最后是颜色值。

void drawTriangle(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t color);
void drawTriangle(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t color);

在这里插入图片描述

Characters and text

有两种不同的画字符串的方法,第一个方法是单独的一个字符的画法,可以是一个字符的位置信息,再就是颜色值。只有一种字体(节省空间),是5x8个像素。可以有作为选项的参数传递给系统,将用比例系数降字体放大(size=2,使字体占有10x16的像素。一个字体可以减少程序的大小。

void drawChar(uint16_t x, uint16_t y, char c, uint16_t color, uint16_t bg, uint8_t size);

在这里插入图片描述

字符是非常灵活的,但也是稍微有些比较难操作的。与其用一个过场来控制文本的大小,颜色及位置还不如用一些独立的功能块来完成,然后用打印print()功能,这使得过程更简单并且可与你像Serial.print()功能一样来使用。

void setCursor(uint16_t x0, uint16_6 y0);
void setTextColor(uint16_t color);
void setTextColor(uint16_t color, uint16_t backgroundcolor);
void setTextSize(uint8_t size);
void setTextWrap(boolean w);

开始用setCursor(x, y)可以将光标设置在需要显示的字符的左上角处。在初始化时,可以用set(0,0)来设置到屏幕的左上角处。然后用setTextColor(color)来设置字符的颜色。作为默认值,是白色。字符通常开始绘制清除,字符的开始部分会显示原始的背景内容,但如果想显示单词的背景颜色,可以在设置setTextColor()的第二个参数来设置。最后,可以用setTextSize(size)来定义整数的比例倍数,可以设置为1,2或者3. 再大或者不行了,因为我们只有一个单一的字体,以节省空间。

在这里插入图片描述

在完成了上面的设置后,我们可以用print()和println() - 就像对 Serial一样的打印。例如,要打印一个字符串,可以使用print(“Hello world”), 这是我们上面的第一行显示的内容。也可以用print()来打印数字和变量。第二行是print(1234.56), 最后一行是print(0xDEADBEEF, HEX).

默认情况下,长的字符串会自动换行,可以用seTextWrap(false). 这时字符串不会换行,会消失。这对滚动选框有用。可以用setTextWrap(true)使超长的字符串自动换行。

请查看“Using Fonts“页获取更对关于字符的特性。

Bitmaps 画画

可以用来绘制小单色的图,制作小的动画或者是图标。

void drawBitmap(int16_t x, int16_t y, uint8_t *bitmap, int16_t w, int16_t h, uint16_t color);

这会在一部分显示区域中发出连续的位信息。这里1代表是像素被设置成规定的颜色,0就是不设置像素的颜色。x,y是位图左上角,w和h是宽度和高度。

位图的数据要存放在PROGMEM的部分,这里有高级的功能可以让开始使用的编程者使用。可以参见Arduino的PROGMEM的使用方法。

还用一个webtool可以用来产生位图的memorymap。

清除或者是填充屏幕 Clearing or filling the screen

用fillScreen()功能块来设置整个显示,可以设置整个显示的颜色。并清除屏幕上的所有内容。

void fillScreen(uint16_t color);

おすすめ

転載: blog.csdn.net/weixin_44481398/article/details/99662120