#include <Arduino.h>
#define LGFX_USE_V1
#include <LovyanGFX.hpp>
#include "LGFX_Config.h"
LGFX lcd;
LGFX_Sprite canvas;
LGFX_Sprite draw_sprite;
#include "png_background.h"
#include "font-pingfang20.h"
void init_display()
{
lcd.init();
lcd.setRotation(1);
lcd.setBrightness(50);
lcd.fillScreen(TFT_BLACK);
}
void setup()
{
init_display();
canvas.createSprite(160, 120);
}
bool need_refresh_0 = true;
bool need_refresh_1 = true;
bool need_refresh_2 = true;
bool need_refresh_3 = true;
void loop()
{
char date_text[80];
struct tm tm_info;
time_t now;
int hour, minute, second, week, month, day, year;
char wk[7][10] = {"日", "一", "二", "三", "四", "五", "六"};
time(&now);
localtime_r(&now, &tm_info);
hour = tm_info.tm_hour;
minute = tm_info.tm_min;
second = tm_info.tm_sec;
week = tm_info.tm_wday;
month = tm_info.tm_mon;
day = tm_info.tm_mday;
year = tm_info.tm_year;
year = year + 1900;
month = month + 1;
if (need_refresh_0)
{
need_refresh_0 = false;
canvas.drawPng(png_background, sizeof(png_background), 0, 0, 160, 120);
canvas.pushSprite(&lcd, 0, 0);
}
draw_sprite.createSprite(160, 22);
draw_sprite.drawPng(png_background, sizeof(png_background), 0, 0, 160, 22, 20, 20); // 绘制背景, 绘制目标位置0,0,绘制尺寸 160, 22, 背景图片的偏移量20,20
draw_sprite.loadFont(font_pingfang_20);
draw_sprite.setTextDatum(CL_DATUM);
// draw_sprite.fillRoundRect(1, 1, 176, 23, 4, text_back_color);
draw_sprite.setTextColor(TFT_BLACK);
sprintf(date_text, "%04d/%02d/%02d %s", year, month, day, wk[week]);
draw_sprite.drawString(date_text, 0, 0);
draw_sprite.pushSprite(&lcd, 20, 20);
draw_sprite.createSprite(160, 22);
draw_sprite.drawPng(png_background, sizeof(png_background), 0, 0, 160, 22, 20, 44);
draw_sprite.loadFont(font_pingfang_20);
draw_sprite.setTextDatum(CL_DATUM);
// draw_sprite.fillRoundRect(1, 1, 176, 23, 4, text_back_color);
draw_sprite.setTextColor(TFT_BLACK);
sprintf(date_text, "%02d:%02d:%02d", hour, minute, second);
draw_sprite.drawString(date_text, 0, 0);
draw_sprite.pushSprite(&lcd, 20, 44);
if (need_refresh_1)
{
need_refresh_1 = false;
canvas.drawPng(png_background, sizeof(png_background), 0, 0, 160, 120, 160, 0);
canvas.pushSprite(&lcd, 160, 0);
}
if (need_refresh_2)
{
need_refresh_2 = false;
canvas.drawPng(png_background, sizeof(png_background), 0, 0, 160, 120, 0, 120);
canvas.pushSprite(&lcd, 0, 120);
}
if (need_refresh_3)
{
need_refresh_2 = false;
canvas.drawPng(png_background, sizeof(png_background), 0, 0, 160, 120, 160, 120);
canvas.pushSprite(&lcd, 160, 120);
}
// canvas.pushSprite(&lcd, 0, 0);
delay(100);
}