使用u8g2绘制一些简单图标-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9941|回复: 6

使用u8g2绘制一些简单图标

[复制链接]
发表于 2019-9-13 19:00 | 显示全部楼层 |阅读模式
之前写了个取模工具,并介绍了使用u8g2显示图片的方法。
https://www.arduino.cn/thread-42174-1-1.html

但这个方法的缺陷是,图片数组存储,会消耗很大的flash空间。
如果是一些简单的图形,并不需要通过上面这种方式显示,u8g2提供常见的图形绘制函数,通过这些函数组合,即可绘制出我们想要的图标。
相关函数参考:https://github.com/olikraus/u8g2/wiki/u8g2reference



这里提供一个绘制电池状态的示例,带有三种状态:电量低、充电中、满电。


效果:
未标题-1.jpg


示例:
[mw_shl_code=arduino,true]#include <U8g2lib.h>
#include <Wire.h>

U8G2_SSD1306_128X32_UNIVISION_1_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE, SCL, SDA);

void setup()
{
  u8g2.begin();
  u8g2.setFlipMode(0);
}

void loop()
{
  u8g2.firstPage();
  do
  {
    drawBattery(35, 1);
    drawBatterycharging(35, 1);
    // drawBatteryFull(35, 1);
    // drawBatteryLow(35, 1);
  } while (u8g2.nextPage());
}

void drawBattery(int x, int y)
{
  u8g2.drawBox(x, y + 8, 3, 14);
  u8g2.drawLine(x + 2, y + 1, x + 2, y + 28);
  u8g2.drawFrame(x + 3, y, 54, 30);
  u8g2.drawFrame(x + 4, y + 1, 52, 28);
  u8g2.drawLine(x + 57, y + 1, x + 57, y + 28);
}

void drawBatteryFull(int x, int y)
{
  u8g2.drawBox(x + 7, y + 4, 46, 22);
}

void drawBatterycharging(int x, int y)
{
  int x1 = x + 18;
  int y1 = y + 5;
  u8g2.drawTriangle(x1, y1 + 4, x1 + 14, y1 + 18, x1 + 15, y1 + 9);
  u8g2.drawTriangle(x1 + 10, y1, x1 + 26, y1 + 15, x1 + 11, y1 + 9);
}

void drawBatteryLow(int x, int y)
{
  u8g2.drawBox(x + 50, y + 4, 3, 22);
}[/mw_shl_code]



发表于 2019-9-13 21:29 | 显示全部楼层
写一个自动根据图片生成绘制指令的程序呗?

点评

这个就有点难了,要把一个图自动拆成点线面框圈  详情 回复 发表于 2019-9-13 22:34
 楼主| 发表于 2019-9-13 22:34 | 显示全部楼层
Zoologist 发表于 2019-9-13 21:29
写一个自动根据图片生成绘制指令的程序呗?

这个就有点难了,要把一个图自动拆成点线面框圈
发表于 2020-5-1 21:28 | 显示全部楼层
大大,那个取模网站失效了好像

点评

能打开啊  详情 回复 发表于 2020-5-1 21:38
 楼主| 发表于 2020-5-1 21:38 | 显示全部楼层
伏仙子 发表于 2020-5-1 21:28
大大,那个取模网站失效了好像

能打开啊
发表于 2020-5-23 21:06 | 显示全部楼层

我这里经常出问题,看样子要学一下上位机了,直接做成软件(疯狂暗示)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 00:57 , Processed in 0.211794 second(s), 27 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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