请选择 进入手机版 | 继续访问电脑版
搜索
查看: 259|回复: 0

[分享] u8glib常用函数

[复制链接]
发表于 2018-1-23 12:22:03 | 显示全部楼层 |阅读模式
u8glib功能非常强大,兼容很多屏,为了很好的使用,函数也非常多,如何更好的使用请参看下边转发的文章

【资料及源代码】
  官方介绍为Universal Graphics Library for 8 Bit Embedded Systems。详见https://code.google.com/p/u8glib/wiki/userreference
    支持多种平台,Arduino,AVR,ARM。在Arduino中使用是非常方便与强大的。支持多种屏幕,比较常用的有OLED,LCD12864,LCD5110等。一些图片https://code.google.com/p/u8glib/wiki/gallery

github地址:https://github.com/olikraus/u8glib


【常用函数】
setFont
    1)方法定义
U8GLIB::setFont(const u8g_fntpgm_uint8_t *font)
复制代码
   2)功能
         设置要显示字符的字体。
    3)参数
         *font:字体样式。u8glib提供的字体样式https://code.google.com/p/u8glib/wiki/fontsize



setPrintPos
    1)方法定义
void U8GLIB::setPrintPos(u8g_uint_t x, u8g_uint_t y)
复制代码
   2)功能
         设置下文中print()的显示位置
    3)参数
         x:横坐标
         y:纵坐标


setColorIndex
    1)方法定义
void U8GLIB::setColorIndex(uint8_t color_index)
复制代码
   2)功能
         对于本文使用的单色OLED来说,此函数功能为是否显示对象。可以理解为透明还是不透明。对于有灰度值的屏幕则是一个灰度值。
    3)参数
         color_index:①1:表示显示,不透明②0:表示不显示,透明。
    4)例子
U8GLIB u8g(...)
...
u8g.setColorIndex(1);
u8g.drawBox(10, 12, 20, 30);  
u8g.setColorIndex(0);
u8g.drawPixel(28, 14);          // clear pixel at (28, 14)





setRot90 or 180 or 270
    1)方法定义
void U8GLIB::setRot90()
void U8GLIB::setRot180()
void U8GLIB::setRot270()
复制代码
   2)功能
         将显示的结果旋转90°或180°或270°
    3)参数
    4)例子
//正常
u8g.setFont(u8g_font_osb18);
u8g.drawStr(0,20, "ABC");

//旋转90°
u8g.setRot90(); //or setRot180();  setRot270();
u8g.setFont(u8g_font_osb18);
u8g.drawStr(0,20, "ABC");
//          0°  ↓                           90°  ↓



setFontPosTop
    1)方法定义
  • void U8GLIB::setFontPosTop(void)

[color=rgb(51, 102, 153) !important]复制代码

   2)功能
         使用drawStr显示字符串时,默认标准为显示字符的左下角坐标。(参考四楼 显示字符 drawStr函数)
         本函数的功能可理解为将坐标位置改为显示字符串的左上角为坐标标准。具体用法可参考例子。
    3)例子


  • U8GLIB u8g(...)
  • ...
  • u8g.setFont(u8g_font_osb18);
  • u8g.setFontPosTop();
  • u8g.drawStr(0, 20, "ABC");




drawPixel
    1)方法定义
  • void U8GLIB::drawPixel(uint8_t x, uint8_t y)

[color=rgb(51, 102, 153) !important]复制代码

   2)功能
         画一个点
    3)参数
         x:点的横坐标
         y:点的纵坐标
    4)例子
U8GLIB u8g( ... )
...
u8g.drawPixel(14, 23);



drawLine
    1)方法定义
  • void U8GLIB::drawLine(u8g_uint_t x1, u8g_uint_t y1, u8g_uint_t x2, u8g_uint_t y2

[color=rgb(51, 102, 153) !important]复制代码

   2)功能
         画一条线段
    3)参数
         x1: 线段起点 横坐标
         y1: 线段起点 纵坐标
         x2: 线段终点 横坐标
         y2: 线段终点 纵坐标
    4)例子
  • u8g.drawLine(7, 10, 40, 55);







drawHLine
    1)方法定义
  • void U8GLIB::drawHLine(u8g_uint_t x, u8g_uint_t y, u8g_uint_t w)

[color=rgb(51, 102, 153) !important]复制代码

   2)功能
         画一条向右的水平线段
    3)参数
         x:线段起点 横坐标
         y:线段起点 纵坐标
         w:水平宽度(w个像素点)
    4)例子 见下边的drawVLine。

  >  drawVLine
    1)方法定义
  • void U8GLIB::drawVLine(u8g_uint_t x, u8g_uint_t y, u8g_uint_t h)

[color=rgb(51, 102, 153) !important]复制代码

   2)功能
         画一条向下的垂直线段
    3)参数
         x:线段起点 横坐标
         y:线段起点 纵坐标
         h:垂直高度(h个像素点)
    4)例子
  • u8g.drawHLine(60,12, 30);
  • u8g.drawVLine(10,20, 20);

[color=rgb(51, 102, 153) !important]复制代码






drawTriangle
    1)方法定义
  • void U8GLIB::drawTriangle(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2)

[color=rgb(51, 102, 153) !important]复制代码

   2)功能
         画一个实心的三角形。至于空心三角形用drawLine即可画出。
    3)参数
         x0:其中一角的 横坐标
         y0:其中一角的 纵坐标
         x1:另一角的 横坐标
         y1:另一角的 纵坐标
         x2:最后一角的 横坐标
         y2:最后一角的 纵坐标
    4)例子
  • u8g.drawTriangle(14,9, 45,32, 9,42);
  • u8g.drawTriangle(14,55, 45,33, 9,43);

[color=rgb(51, 102, 153) !important]复制代码







drawFrame
    1)方法定义
  • void U8GLIB::drawFrame(u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h)

[color=rgb(51, 102, 153) !important]复制代码

   2)功能
         画一个空心矩形
    3)参数
         x:方框左上角点的横坐标
         y:方框左上角点的纵坐标
         w:方框的宽
         h:方框的高
    4)例子
  • u8g.drawFrame(10, 12, 30, 20); // 方框的长宽包括了边框所在的像素点







drawRFrame
    1)方法定义
  • void U8GLIB::drawRFrame(u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, u8g_uint_t r)

[color=rgb(51, 102, 153) !important]复制代码

   2)功能
         ]画一个[color=Red圆角空心矩形
         其中 最好满足:w>=2x(r+1), h>=2x(r+1)。
    3)参数
         x:圆角矩形左上角 横坐标
         y:圆角矩形左上角 纵坐标
         w:圆角矩形 宽度
         h:圆角矩形 高度
         r:圆角弧度的半径
    4)例子
  • u8g.drawRFrame(10,12, 30,20, 5);


[color=rgb(51, 102, 153) !important]






drawBox
    1)方法定义
  • void U8GLIB::drawBox(u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h)

[color=rgb(51, 102, 153) !important]复制代码

   2)功能
         画一个实心矩形
    3)参数
         x:矩形左上角的 横坐标
         y:矩形左上角的 纵坐标
         w:矩形的 宽
         h:矩形的 高
    4)例子
  • U8GLIB u8g(...)
  • ...
  • u8g.drawBox(10,12,20,3








drawRBox
    1)方法定义
  • void U8GLIB::drawRBox(u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, u8g_uint_t r)

[color=rgb(51, 102, 153) !important]复制代码

   2)功能
         画一个圆角实心矩形,与drawTFrame类似。
    3)参数
         x:圆角矩形左上角 横坐标
         y:圆角矩形左上角 纵坐标
         w:矩形的 宽
         h:矩形的 高
         r:圆角弧度半径


drawCircle
    1)方法定义
  • void U8GLIB::drawCircle(u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t opt = U8G_DRAW_ALL)

[color=rgb(51, 102, 153) !important]复制代码

   2)功能
         画一个空心圆
    3)参数
         x0:圆心 横坐标
         y0:圆心 纵坐标
         rad:半径
         opt:
                 U8G_DRAW_UPPER_RIGHT        上部右侧 1/4 圆弧
                 U8G_DRAW_UPPER_LEFT          上部左侧 1/4 圆弧
                 U8G_DRAW_LOWER_LEFT         下部左侧 1/4 圆弧
                 U8G_DRAW_LOWER_RIGHT       下部右侧 1/4 圆弧
                 U8G_DRAW_ALL                          整圆(默认)
    4)例子
  • u8g.drawCircle(20,20, 14); //整圆
  • u8g.drawCircle(20,20, 14, U8G_DRAW_UPPER_RIGHT); //1/4圆







drawDisc
    1)方法定义
  • void U8GLIB::drawDisc(u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t opt = U8G_DRAW_ALL)

[color=rgb(51, 102, 153) !important]复制代码

   2)功能
         画一个实心圆,直径=2*rad+1
    3)参数
         x0:圆心 横坐标
         y0:圆心 纵坐标
         rad:半径
         opt:
                 U8G_DRAW_UPPER_RIGHT        上部右侧 1/4 扇形
                 U8G_DRAW_UPPER_LEFT          上部左侧 1/4 扇形
                 U8G_DRAW_LOWER_LEFT         下部左侧 1/4 扇形
                 U8G_DRAW_LOWER_RIGHT       下部右侧 1/4 扇形
                 U8G_DRAW_ALL                          整圆(默认)



drawEllipse
    1)方法定义
  • void drawEllipse(u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rx, u8g_uint_t ry, uint8_t opt)

[color=rgb(51, 102, 153) !important]复制代码

   2)功能
         圆一个椭圆(空心)
    3)参数
         x0,y0:椭圆圆心 横、纵坐标
         rx:水平方向半径
         ry:垂直方向半径
         opt:
                 U8G_DRAW_UPPER_RIGHT        上部右侧 1/4 椭圆弧
                 U8G_DRAW_UPPER_LEFT          上部左侧 1/4 椭圆弧
                 U8G_DRAW_LOWER_LEFT         下部左侧 1/4 椭圆弧
                 U8G_DRAW_LOWER_RIGHT       下部右侧 1/4 椭圆弧
                 U8G_DRAW_ALL                          整圆(默认)
    4)例子
  • //相同圆心的椭圆与圆
  • u8g.drawEllipse(20,20, 14,17);
  • u8g.drawCircle(20,20, 14);












drawFilledEllipse
    1)方法定义
  • void drawFilledEllipse(u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rx, u8g_uint_t ry, uint8_t opt)

[color=rgb(51, 102, 153) !important]复制代码

   2)功能
         画一个椭圆(实心)
    3)参数
         x0,y0:椭圆圆心 横、纵坐标
         rx:水平方向半径
         ry:垂直方向半径
         opt:
                 U8G_DRAW_UPPER_RIGHT        上部右侧 1/4 椭圆
                 U8G_DRAW_UPPER_LEFT          上部左侧 1/4 椭圆
                 U8G_DRAW_LOWER_LEFT         下部左侧 1/4 椭圆
                 U8G_DRAW_LOWER_RIGHT       下部右侧 1/4 椭圆
                 U8G_DRAW_ALL                          整圆(默认)




就先发这些常用的吧,还有很多,官方应该有手册的,具体请参考手册






[color=rgb(51, 102, 153) !important]

[color=rgb(51, 102, 153) !important]

[color=rgb(51, 102, 153) !important]

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /5 下一条

facebook google plus twitter linkedin youku weibo rss
©2018 Microchip Corporation

小黑屋|手机版|Archiver|Microchip技术社区

GMT+8, 2018-8-20 15:09 , Processed in 0.075773 second(s), 6 queries , MemCache On.

快速回复 返回顶部 返回列表