LVGL:渐变方案

仿照qt的QGradient::Preset渐变类型写的,因为lvgl只支持水平/垂直渐变,且只支持两种颜色的渐变,所以有些类型的渐变未能实现,有些则缺少中间颜色。

代码:

namespace Gradient
{
enum Preset
{
    WarmFlame = 1,
    NightFade = 2,
    SpringWarmth = 3,
    JuicyPeach = 4,
    YoungPassion = 5,
    LadyLips = 6,
    SunnyMorning = 7,
    RainyAshville = 8,
    FrozenDreams = 9,
    WinterNeva = 10,
    DustyGrass = 11,
    TemptingAzure = 12,
    HeavyRain = 13,
    AmyCrisp = 14,
    MeanFruit = 15,
    DeepBlue = 16,
    RipeMalinka = 17,
    CloudyKnoxville = 18,
    MalibuBeach = 19,
    NewLife = 20,
    TrueSunset = 21,
    MorpheusDen = 22,
    RareWind = 23,
    NearMoon = 24,
    WildApple = 25,
    SaintPetersburg = 26,
    PlumPlate = 28,
    EverlastingSky = 29,
    HappyFisher = 30,
    Blessing = 31,
    SharpeyeEagle = 32,
    LadogaBottom = 33,
    LemonGate = 34,
    ItmeoBranding = 35,
    ZeusMiracle = 36,
    OldHat = 37,
    StarWine = 38,
    HappyAcid = 41,
    AwesomePine = 42,
    NewYork = 43,
    ShyRainbow = 44,
    MixedHopes = 46,
    FlyHigh = 47,
    StrongBliss = 48,
    FreshMilk = 49,
    SnowAgain = 50,
    FebruaryInk = 51,
    KindSteel = 52,
    SoftGrass = 53,
    GrownEarly = 54,
    SharpBlues = 55,
    ShadyWater = 56,
    DirtyBeauty = 57,
    GreatWhale = 58,
    TeenNotebook = 59,
    PoliteRumors = 60,
    SweetPeriod = 61,
    WideMatrix = 62,
    SoftCherish = 63,
    RedSalvation = 64,
    BurningSpring = 65,
    NightParty = 66,
    SkyGlider = 67,
    HeavenPeach = 68,
    PurpleDivision = 69,
    AquaSplash = 70,
    SpikyNaga = 72,
    LoveKiss = 73,
    CleanMirror = 75,
    PremiumDark = 76,
    ColdEvening = 77,
    CochitiLake = 78,
    SummerGames = 79,
    PassionateBed = 80,
    MountainRock = 81,
    DesertHump = 82,
    JungleDay = 83,
    PhoenixStart = 84,
    OctoberSilence = 85,
    FarawayRiver = 86,
    AlchemistLab = 87,
    OverSun = 88,
    PremiumWhite = 89,
    MarsParty = 90,
    EternalConstance = 91,
    JapanBlush = 92,
    SmilingRain = 93,
    CloudyApple = 94,
    BigMango = 95,
    HealthyWater = 96,
    AmourAmour = 97,
    RiskyConcrete = 98,
    StrongStick = 99,
    ViciousStance = 100,
    PaloAlto = 101,
    HappyMemories = 102,
    MidnightBloom = 103,
    Crystalline = 104,
    PartyBliss = 106,
    ConfidentCloud = 107,
    LeCocktail = 108,
    RiverCity = 109,
    FrozenBerry = 110,
    ChildCare = 112,
    FlyingLemon = 113,
    NewRetrowave = 114,
    HiddenJaguar = 115,
    AboveTheSky = 116,
    Nega = 117,
    DenseWater = 118,
    Seashore = 120,
    MarbleWall = 121,
    CheerfulCaramel = 122,
    NightSky = 123,
    MagicLake = 124,
    YoungGrass = 125,
    ColorfulPeach = 126,
    GentleCare = 127,
    PlumBath = 128,
    HappyUnicorn = 129,
    AfricanField = 131,
    SolidStone = 132,
    OrangeJuice = 133,
    GlassWater = 134,
    NorthMiracle = 136,
    FruitBlend = 137,
    MillenniumPine = 138,
    HighFlight = 139,
    MoleHall = 140,
    SpaceShift = 142,
    ForestInei = 143,
    RoyalGarden = 144,
    RichMetal = 145,
    JuicyCake = 146,
    SmartIndigo = 147,
    SandStrike = 148,
    NorseBeauty = 149,
    AquaGuidance = 150,
    SunVeggie = 151,
    SeaLord = 152,
    BlackSea = 153,
    GrassShampoo = 154,
    LandingAircraft = 155,
    WitchDance = 156,
    SleeplessNight = 157,
    AngelCare = 158,
    CrystalRiver = 159,
    SoftLipstick = 160,
    SaltMountain = 161,
    PerfectWhite = 162,
    FreshOasis = 163,
    StrictNovember = 164,
    MorningSalad = 165,
    DeepRelief = 166,
    SeaStrike = 167,
    NightCall = 168,
    SupremeSky = 169,
    LightBlue = 170,
    MindCrawl = 171,
    LilyMeadow = 172,
    SugarLollipop = 173,
    SweetDessert = 174,
    MagicRay = 175,
    TeenParty = 176,
    FrozenHeat = 177,
    GagarinView = 178,
    FabledSunset = 179,
    PerfectBlue = 180,

    NumPresets
};

void setGradient(Gradient::Preset gradient,lv_draw_rect_dsc_t * rect_dsc);
}

void Gradient::setGradient(Preset gradient, lv_draw_rect_dsc_t *rect_dsc)
{
    std::map<Preset,std::tuple<lv_color_t,lv_color_t,lv_grad_dir_t>> map;
    map[WarmFlame] = std::make_tuple(lv_color_make(0xff,0x9a,0x9e),lv_color_make(0xfa,0xd0,0xc4),LV_GRAD_DIR_HOR);
    map[NightFade] = std::make_tuple(lv_color_make(0xfb,0xc2,0xeb),lv_color_make(0xa1,0x8c,0xd1),LV_GRAD_DIR_VER);
    map[SpringWarmth] = std::make_tuple(lv_color_make(0xff,0xd1,0xff),lv_color_make(0xfa,0xd0,0xc4),LV_GRAD_DIR_VER);
    map[JuicyPeach] = std::make_tuple(lv_color_make(0xff,0xec,0xd2),lv_color_make(0xfc,0xb6,0x9f),LV_GRAD_DIR_HOR);
    map[YoungPassion] = std::make_tuple(lv_color_make(0xff,0x81,0x77),lv_color_make(0xb1,0x2a,0x5b),LV_GRAD_DIR_HOR);
    map[LadyLips] = std::make_tuple(lv_color_make(0xfe,0xcf,0xef),lv_color_make(0xff,0x9a,0x9e),LV_GRAD_DIR_VER);
    map[SunnyMorning] = std::make_tuple(lv_color_make(0xf6,0xd3,0x65),lv_color_make(0xfd,0xa0,0x85),LV_GRAD_DIR_HOR);
    map[RainyAshville] = std::make_tuple(lv_color_make(0xa6,0xc1,0xee),lv_color_make(0xfb,0xc2,0xeb),LV_GRAD_DIR_VER);
    map[FrozenDreams] = std::make_tuple(lv_color_hex(0xe6dee9),lv_color_hex(0xfdcbf1),LV_GRAD_DIR_VER);
    map[WinterNeva] = std::make_tuple(lv_color_hex(0xa1c4fd),lv_color_hex(0xc2e9fb),LV_GRAD_DIR_HOR);
    map[DustyGrass] = std::make_tuple(lv_color_hex(0xd4fc79),lv_color_hex(0x96e6a1),LV_GRAD_DIR_HOR);
    map[TemptingAzure] = std::make_tuple(lv_color_hex(0x84fab0),lv_color_hex(0x8fd3f4),LV_GRAD_DIR_HOR);
    map[HeavyRain] = std::make_tuple(lv_color_hex(0xe2ebf0),lv_color_hex(0xcfd9df),LV_GRAD_DIR_VER);
    map[AmyCrisp] = std::make_tuple(lv_color_hex(0xa6c0fe),lv_color_hex(0xf68084),LV_GRAD_DIR_HOR);
    map[MeanFruit] = std::make_tuple(lv_color_hex(0xfccb90),lv_color_hex(0xd57eeb),LV_GRAD_DIR_HOR);
    map[DeepBlue] = std::make_tuple(lv_color_hex(0xe0c3fc),lv_color_hex(0x8ec5fc),LV_GRAD_DIR_HOR);
    map[RipeMalinka] = std::make_tuple(lv_color_hex(0xf093fb),lv_color_hex(0xf5576c),LV_GRAD_DIR_HOR);
    map[CloudyKnoxville] = std::make_tuple(lv_color_hex(0xfdfbfb),lv_color_hex(0xebedee),LV_GRAD_DIR_HOR);
    map[MalibuBeach] = std::make_tuple(lv_color_hex(0x4facfe),lv_color_hex(0x00f2fe),LV_GRAD_DIR_HOR);
    map[NewLife] = std::make_tuple(lv_color_hex(0x38f9d7),lv_color_hex(0x43e97b),LV_GRAD_DIR_HOR);//20
    map[TrueSunset] = std::make_tuple(lv_color_hex(0xfee140),lv_color_hex(0xfa709a),LV_GRAD_DIR_HOR);
    map[MorpheusDen] = std::make_tuple(lv_color_hex(0x330867),lv_color_hex(0x30cfd0),LV_GRAD_DIR_VER);
    map[RareWind] = std::make_tuple(lv_color_hex(0xfed6e3),lv_color_hex(0xa8edea),LV_GRAD_DIR_VER);
    map[NearMoon] = std::make_tuple(lv_color_hex(0xb490ca),lv_color_hex(0x5ee7df),LV_GRAD_DIR_VER);
    map[WildApple] = std::make_tuple(lv_color_hex(0xfef9d7),lv_color_hex(0xd299c2),LV_GRAD_DIR_VER);
    map[SaintPetersburg] = std::make_tuple(lv_color_hex(0xf5f7fa),lv_color_hex(0xc3cfe2),LV_GRAD_DIR_HOR);
    map[PlumPlate] = std::make_tuple(lv_color_hex(0x667eea),lv_color_hex(0x764ba2),LV_GRAD_DIR_HOR);
    map[EverlastingSky] = std::make_tuple(lv_color_hex(0xfdfcfb),lv_color_hex(0xe2d1c3),LV_GRAD_DIR_HOR);
    map[HappyFisher] = std::make_tuple(lv_color_hex(0x89f7fe),lv_color_hex(0x66a6ff),LV_GRAD_DIR_HOR);
    map[Blessing] = std::make_tuple(lv_color_hex(0xd1fdff),lv_color_hex(0xfddb92),LV_GRAD_DIR_VER);
    map[SharpeyeEagle] = std::make_tuple(lv_color_hex(0xb1f4cf),lv_color_hex(0x9890e3),LV_GRAD_DIR_VER);
    map[LadogaBottom] = std::make_tuple(lv_color_hex(0xd9ded8),lv_color_hex(0xebc0fd),LV_GRAD_DIR_VER);
    map[LemonGate] = std::make_tuple(lv_color_hex(0xf9f586),lv_color_hex(0x96fbc4),LV_GRAD_DIR_VER);
    map[ItmeoBranding] = std::make_tuple(lv_color_hex(0x2af598),lv_color_hex(0x009efd),LV_GRAD_DIR_VER);
    map[ZeusMiracle] = std::make_tuple(lv_color_hex(0xf6f3ff),lv_color_hex(0xcd9cf2),LV_GRAD_DIR_VER);//35

    // map[OldHat] =
    // map[StarWine] =

    map[HappyAcid] = std::make_tuple(lv_color_hex(0x72afd3),lv_color_hex(0x37ecba),LV_GRAD_DIR_VER);
    map[AwesomePine] = std::make_tuple(lv_color_hex(0xcfc7f8),lv_color_hex(0xebbba7),LV_GRAD_DIR_VER);
    map[NewYork] = std::make_tuple(lv_color_hex(0xace0f9),lv_color_hex(0xfff1eb),LV_GRAD_DIR_VER);

    // map[ShyRainbow] =
    map[MixedHopes] = std::make_tuple(lv_color_hex(0xfa71cd),lv_color_hex(0xc471f5),LV_GRAD_DIR_VER);
    map[FlyHigh] = std::make_tuple(lv_color_hex(0x6f86d6),lv_color_hex(0x48c6ef),LV_GRAD_DIR_VER);

    // map[StrongBliss] =
    map[FreshMilk] = std::make_tuple(lv_color_hex(0xf5efef),lv_color_hex(0xfeada6),LV_GRAD_DIR_VER);
    map[SnowAgain] = std::make_tuple(lv_color_hex(0xeef1f5),lv_color_hex(0xe6e9f0),LV_GRAD_DIR_VER);
    map[FebruaryInk] = std::make_tuple(lv_color_hex(0xe7f0fd),lv_color_hex(0xaccbee),LV_GRAD_DIR_VER);
    map[KindSteel] = std::make_tuple(lv_color_hex(0xe9defa),lv_color_hex(0xfbfcdb),LV_GRAD_DIR_HOR);
    map[SoftGrass] = std::make_tuple(lv_color_hex(0xdeecdd),lv_color_hex(0xc1dfc4),LV_GRAD_DIR_VER);
    map[GrownEarly] = std::make_tuple(lv_color_hex(0x3cba92),lv_color_hex(0x0ba360),LV_GRAD_DIR_VER);
    map[SharpBlues] = std::make_tuple(lv_color_hex(0x005bea),lv_color_hex(0x00c6fb),LV_GRAD_DIR_VER);
    map[ShadyWater] = std::make_tuple(lv_color_hex(0x74ebd5),lv_color_hex(0x9face6),LV_GRAD_DIR_HOR);
    map[DirtyBeauty] = std::make_tuple(lv_color_hex(0xbac8e0),lv_color_hex(0x6a85b6),LV_GRAD_DIR_VER);
    map[GreatWhale] = std::make_tuple(lv_color_hex(0x6991c7),lv_color_hex(0xa3bded),LV_GRAD_DIR_VER);
    map[TeenNotebook] = std::make_tuple(lv_color_hex(0xfbc8d4),lv_color_hex(0x9795f0),LV_GRAD_DIR_VER);
    map[PoliteRumors] = std::make_tuple(lv_color_hex(0x8989ba),lv_color_hex(0xa7a6cb),LV_GRAD_DIR_VER);

    // map[SweetPeriod] =
    // map[WideMatrix] =
    // map[SoftCherish] =

    map[RedSalvation] = std::make_tuple(lv_color_hex(0x453a94),lv_color_hex(0xf43b47),LV_GRAD_DIR_VER);

    // map[BurningSpring] =

    map[NightParty] = std::make_tuple(lv_color_hex(0xd43f8d),lv_color_hex(0x0250c5),LV_GRAD_DIR_VER);
    map[SkyGlider] = std::make_tuple(lv_color_hex(0x6e45e2),lv_color_hex(0x88d3ce),LV_GRAD_DIR_VER);
    map[HeavenPeach] = std::make_tuple(lv_color_hex(0x97d9e1),lv_color_hex(0xd9afd9),LV_GRAD_DIR_VER);
    map[PurpleDivision] = std::make_tuple(lv_color_hex(0xe5b2ca),lv_color_hex(0x7028e4),LV_GRAD_DIR_VER);
    map[AquaSplash] = std::make_tuple(lv_color_hex(0x13547a),lv_color_hex(0x80d0c7),LV_GRAD_DIR_HOR);

    // map[SpikyNaga] =

    map[LoveKiss] = std::make_tuple(lv_color_hex(0xffb199),lv_color_hex(0xff0844),LV_GRAD_DIR_VER);
    map[CleanMirror] = std::make_tuple(lv_color_hex(0x93a5cf),lv_color_hex(0xe4efe9),LV_GRAD_DIR_HOR);
    map[PremiumDark] = std::make_tuple(lv_color_hex(0x434343),lv_color_hex(0x000000),LV_GRAD_DIR_HOR);
    map[ColdEvening] = std::make_tuple(lv_color_hex(0xa2b6df),lv_color_hex(0x0c3483),LV_GRAD_DIR_VER);
    map[CochitiLake] = std::make_tuple(lv_color_hex(0x93a5cf),lv_color_hex(0xe4efe9),LV_GRAD_DIR_HOR);
    map[SummerGames] = std::make_tuple(lv_color_hex(0x92fe9d),lv_color_hex(0x00c9ff),LV_GRAD_DIR_HOR);
    map[PassionateBed] = std::make_tuple(lv_color_hex(0xff758c),lv_color_hex(0xff7eb3),LV_GRAD_DIR_HOR);
    map[MountainRock] = std::make_tuple(lv_color_hex(0x868f96),lv_color_hex(0x596164),LV_GRAD_DIR_HOR);
    map[DesertHump] = std::make_tuple(lv_color_hex(0xdfa579),lv_color_hex(0xc79081),LV_GRAD_DIR_VER);
    map[JungleDay] = std::make_tuple(lv_color_hex(0x8baaaa),lv_color_hex(0xae8b9c),LV_GRAD_DIR_HOR);
    map[PhoenixStart] = std::make_tuple(lv_color_hex(0xf83600),lv_color_hex(0xf9d423),LV_GRAD_DIR_HOR);
    map[OctoberSilence] = std::make_tuple(lv_color_hex(0xb721ff),lv_color_hex(0x21d4fd),LV_GRAD_DIR_HOR);
    map[FarawayRiver] = std::make_tuple(lv_color_hex(0x6e45e2),lv_color_hex(0x88d3ce),LV_GRAD_DIR_HOR);
    map[AlchemistLab] = std::make_tuple(lv_color_hex(0xd558c8),lv_color_hex(0x24d292),LV_GRAD_DIR_HOR);
    map[OverSun] = std::make_tuple(lv_color_hex(0xabecd6),lv_color_hex(0xfbed96),LV_GRAD_DIR_HOR);

    // map[PremiumWhite] =

    map[MarsParty] = std::make_tuple(lv_color_hex(0x9b23ea),lv_color_hex(0x5f72bd),LV_GRAD_DIR_VER);
    map[EternalConstance] = std::make_tuple(lv_color_hex(0x537895),lv_color_hex(0x09203f),LV_GRAD_DIR_VER);
    map[JapanBlush] = std::make_tuple(lv_color_hex(0xddd6f3),lv_color_hex(0xfaaca8),LV_GRAD_DIR_HOR);
    map[SmilingRain] = std::make_tuple(lv_color_hex(0xdcb0ed),lv_color_hex(0x99c99c),LV_GRAD_DIR_HOR);
    map[CloudyApple] = std::make_tuple(lv_color_hex(0xe3eeff),lv_color_hex(0xf3e7e9),LV_GRAD_DIR_VER);
    map[BigMango] = std::make_tuple(lv_color_hex(0xd09693),lv_color_hex(0xc71d6f),LV_GRAD_DIR_VER);
    map[HealthyWater] = std::make_tuple(lv_color_hex(0x96deda),lv_color_hex(0x50c9c3),LV_GRAD_DIR_HOR);
    map[AmourAmour] = std::make_tuple(lv_color_hex(0xfe5196),lv_color_hex(0xf77062),LV_GRAD_DIR_VER);
    map[RiskyConcrete] = std::make_tuple(lv_color_hex(0xebebeb),lv_color_hex(0xc4c5c7),LV_GRAD_DIR_VER);
    map[StrongStick] = std::make_tuple(lv_color_hex(0xa8caba),lv_color_hex(0x5d4157),LV_GRAD_DIR_HOR);
    map[ViciousStance] = std::make_tuple(lv_color_hex(0x29323c),lv_color_hex(0x485563),LV_GRAD_DIR_HOR);
    map[PaloAlto] = std::make_tuple(lv_color_hex(0xf4d03f),lv_color_hex(0x16a085),LV_GRAD_DIR_HOR);
    map[HappyMemories] = std::make_tuple(lv_color_hex(0xf09819),lv_color_hex(0xff5858),LV_GRAD_DIR_HOR);
    map[MidnightBloom] = std::make_tuple(lv_color_hex(0x4e4376),lv_color_hex(0x2b5876),LV_GRAD_DIR_HOR);
    map[Crystalline] = std::make_tuple(lv_color_hex(0x8ddad5),lv_color_hex(0x00cdac),LV_GRAD_DIR_HOR);

    map[PartyBliss] = std::make_tuple(lv_color_hex(0x04befe),lv_color_hex(0x4481eb),LV_GRAD_DIR_VER);
    map[ConfidentCloud] = std::make_tuple(lv_color_hex(0xf3e7e9),lv_color_hex(0xdad4ec),LV_GRAD_DIR_VER);
    map[LeCocktail] = std::make_tuple(lv_color_hex(0x874da2),lv_color_hex(0xc43a30),LV_GRAD_DIR_HOR);
    map[RiverCity] = std::make_tuple(lv_color_hex(0x04befe),lv_color_hex(0x4481eb),LV_GRAD_DIR_VER);
    map[FrozenBerry] = std::make_tuple(lv_color_hex(0xc7eafd),lv_color_hex(0xe8198b),LV_GRAD_DIR_VER);
    map[ChildCare] = std::make_tuple(lv_color_hex(0xfdd6bd),lv_color_hex(0xf794a4),LV_GRAD_DIR_HOR);
    map[FlyingLemon] = std::make_tuple(lv_color_hex(0x64b3f4),lv_color_hex(0xc2e59c),LV_GRAD_DIR_HOR);
    map[NewRetrowave] = std::make_tuple(lv_color_hex(0xa981bb),lv_color_hex(0x3b41c5),LV_GRAD_DIR_VER);
    map[HiddenJaguar] = std::make_tuple(lv_color_hex(0xf9f047),lv_color_hex(0x0fd850),LV_GRAD_DIR_VER);

    // map[AboveTheSky] =

    map[Nega] = std::make_tuple(lv_color_hex(0xee9ca7),lv_color_hex(0xffdde1),LV_GRAD_DIR_HOR);
    map[DenseWater] = std::make_tuple(lv_color_hex(0x3ab5b0),lv_color_hex(0x56317a),LV_GRAD_DIR_HOR);
    map[Seashore] = std::make_tuple(lv_color_hex(0x68e0cf),lv_color_hex(0x209cff),LV_GRAD_DIR_VER);
    map[MarbleWall] = std::make_tuple(lv_color_hex(0xe6dee9),lv_color_hex(0xbdc2e8),LV_GRAD_DIR_VER);
    map[CheerfulCaramel] = std::make_tuple(lv_color_hex(0xeacda3),lv_color_hex(0xe6b980),LV_GRAD_DIR_VER);
    map[NightSky] = std::make_tuple(lv_color_hex(0x2a5298),lv_color_hex(0x1e3c72),LV_GRAD_DIR_VER);
    map[MagicLake] = std::make_tuple(lv_color_hex(0xc9ffbf),lv_color_hex(0xffafbd),LV_GRAD_DIR_VER);
    map[YoungGrass] = std::make_tuple(lv_color_hex(0x00e3ae),lv_color_hex(0x9be15d),LV_GRAD_DIR_VER);
    map[ColorfulPeach] = std::make_tuple(lv_color_hex(0xed6ea0),lv_color_hex(0xec8c69),LV_GRAD_DIR_HOR);
    map[GentleCare] = std::make_tuple(lv_color_hex(0xffc3a0),lv_color_hex(0xffafbd),LV_GRAD_DIR_HOR);
    map[PlumBath] = std::make_tuple(lv_color_hex(0x6713d2),lv_color_hex(0xcc208e),LV_GRAD_DIR_VER);
    map[HappyUnicorn] = std::make_tuple(lv_color_hex(0x12fff7),lv_color_hex(0xb3ffab),LV_GRAD_DIR_VER);
    map[AfricanField] = std::make_tuple(lv_color_hex(0xFF6B95),lv_color_hex(0xFFC796),LV_GRAD_DIR_HOR);
    map[SolidStone] = std::make_tuple(lv_color_hex(0x243949),lv_color_hex(0x517fa4),LV_GRAD_DIR_HOR);
    map[OrangeJuice] = std::make_tuple(lv_color_hex(0xff9a44),lv_color_hex(0xfc6076),LV_GRAD_DIR_VER);
    map[GlassWater] = std::make_tuple(lv_color_hex(0xffffff),lv_color_hex(0xdfe9f3),LV_GRAD_DIR_VER);
    map[NorthMiracle] = std::make_tuple(lv_color_hex(0x00dbde),lv_color_hex(0xfc00ff),LV_GRAD_DIR_HOR);
    map[FruitBlend] = std::make_tuple(lv_color_hex(0xf9d423),lv_color_hex(0xff4e50),LV_GRAD_DIR_HOR);
    map[MillenniumPine] = std::make_tuple(lv_color_hex(0xf5d100),lv_color_hex(0x50cc7f),LV_GRAD_DIR_VER);
    map[HighFlight] = std::make_tuple(lv_color_hex(0x0acffe),lv_color_hex(0x495aff),LV_GRAD_DIR_HOR);
    map[MoleHall] = std::make_tuple(lv_color_hex(0x9bc5c3),lv_color_hex(0x616161),LV_GRAD_DIR_HOR);

    // map[SpaceShift] =

    map[ForestInei] = std::make_tuple(lv_color_hex(0xbfd9fe),lv_color_hex(0xdf89b5),LV_GRAD_DIR_VER);
    map[RoyalGarden] = std::make_tuple(lv_color_hex(0xed6ea0),lv_color_hex(0xec8c69),LV_GRAD_DIR_HOR);
    map[RichMetal] = std::make_tuple(lv_color_hex(0xd7d2cc),lv_color_hex(0x304352),LV_GRAD_DIR_HOR);
    map[JuicyCake] = std::make_tuple(lv_color_hex(0xf9d423),lv_color_hex(0xe14fad),LV_GRAD_DIR_VER);
    map[SmartIndigo] = std::make_tuple(lv_color_hex(0x7579ff),lv_color_hex(0xb224ef),LV_GRAD_DIR_VER);
    map[SandStrike] = std::make_tuple(lv_color_hex(0xc1c161),lv_color_hex(0xd4d4b1),LV_GRAD_DIR_HOR);
    map[NorseBeauty] = std::make_tuple(lv_color_hex(0xec77ab),lv_color_hex(0x7873f5),LV_GRAD_DIR_HOR);
    map[AquaGuidance] = std::make_tuple(lv_color_hex(0x00ecbc),lv_color_hex(0x007adf),LV_GRAD_DIR_VER);
    map[SunVeggie] = std::make_tuple(lv_color_hex(0x20E2D7),lv_color_hex(0xF9FEA5),LV_GRAD_DIR_HOR);

    // map[SeaLord] =
    // map[BlackSea] =

    map[GrassShampoo] = std::make_tuple(lv_color_hex(0xDFFFCD),lv_color_hex(0x39F3BB),LV_GRAD_DIR_HOR);

    // map[LandingAircraft] =

    map[WitchDance] = std::make_tuple(lv_color_hex(0xA8BFFF),lv_color_hex(0x884D80),LV_GRAD_DIR_HOR);
    map[SleeplessNight] = std::make_tuple(lv_color_hex(0x5271C4),lv_color_hex(0xECA1FE),LV_GRAD_DIR_HOR);
    map[AngelCare] = std::make_tuple(lv_color_hex(0xFFE29F),lv_color_hex(0xFF719A),LV_GRAD_DIR_HOR);
    map[CrystalRiver] = std::make_tuple(lv_color_hex(0x22E1FF),lv_color_hex(0x625EB1),LV_GRAD_DIR_HOR);
    map[SoftLipstick] = std::make_tuple(lv_color_hex(0xB6CEE8),lv_color_hex(0xF578DC),LV_GRAD_DIR_HOR);
    map[SaltMountain] = std::make_tuple(lv_color_hex(0xFFFEFF),lv_color_hex(0xD7FFFE),LV_GRAD_DIR_HOR);
    map[PerfectWhite] = std::make_tuple(lv_color_hex(0xE3FDF5),lv_color_hex(0xFFE6FA),LV_GRAD_DIR_HOR);
    map[FreshOasis] = std::make_tuple(lv_color_hex(0x7DE2FC),lv_color_hex(0xB9B6E5),LV_GRAD_DIR_HOR);
    map[StrictNovember] = std::make_tuple(lv_color_hex(0xCBBACC),lv_color_hex(0x2580B3),LV_GRAD_DIR_HOR);
    map[MorningSalad] = std::make_tuple(lv_color_hex(0xB7F8DB),lv_color_hex(0x50A7C2),LV_GRAD_DIR_HOR);
    map[DeepRelief] = std::make_tuple(lv_color_hex(0x7085B6),lv_color_hex(0xDEF3F8),LV_GRAD_DIR_HOR);

    // map[SeaStrike] =

    map[NightCall] = std::make_tuple(lv_color_hex(0xAC32E4),lv_color_hex(0x4801FF),LV_GRAD_DIR_HOR);
    map[SupremeSky] = std::make_tuple(lv_color_hex(0xD4FFEC),lv_color_hex(0x4596FB),LV_GRAD_DIR_HOR);
    map[LightBlue] = std::make_tuple(lv_color_hex(0x9EFBD3),lv_color_hex(0x45D4FB),LV_GRAD_DIR_HOR);
    map[MindCrawl] = std::make_tuple(lv_color_hex(0x473B7B),lv_color_hex(0x30D2BE),LV_GRAD_DIR_HOR);
    map[LilyMeadow] = std::make_tuple(lv_color_hex(0x65379B),lv_color_hex(0x6457C6),LV_GRAD_DIR_HOR);
    map[SugarLollipop] = std::make_tuple(lv_color_hex(0xA445B2),lv_color_hex(0xFF0066),LV_GRAD_DIR_HOR);
    map[SweetDessert] = std::make_tuple(lv_color_hex(0x7742B2),lv_color_hex(0xFD8BD9),LV_GRAD_DIR_HOR);
    map[MagicRay] = std::make_tuple(lv_color_hex(0xFF3CAC),lv_color_hex(0x2B86C5),LV_GRAD_DIR_HOR);
    map[TeenParty] = std::make_tuple(lv_color_hex(0xFF057C),lv_color_hex(0x321575),LV_GRAD_DIR_HOR);
    map[FrozenHeat] = std::make_tuple(lv_color_hex(0xFF057C),lv_color_hex(0x4CC3FF),LV_GRAD_DIR_HOR);

    // map[GagarinView] =
    // map[FabledSunset] =

    map[PerfectBlue] = std::make_tuple(lv_color_hex(0x3D4E81),lv_color_hex(0x6E7FF3),LV_GRAD_DIR_HOR);

    auto it = map.find(gradient);
    if (it == map.end())
    {
        rect_dsc->bg_color = lv_color_hex(0xFFFFFF);
        rect_dsc->bg_grad_color = lv_color_hex(0xFFFFFF);
        rect_dsc->bg_grad_dir = LV_GRAD_DIR_HOR;
    }
    else
    {
        auto tuple = map[gradient];
        rect_dsc->bg_color = std::get<0>(tuple);
        rect_dsc->bg_grad_color = std::get<1>(tuple);
        rect_dsc->bg_grad_dir = std::get<2>(tuple);
    }
}

使用示例:

int main(int argc, char **argv)
{
    lv_init();
    hal_init();

    lv_log_register_print_cb(esp32_log_cb);

    lv_obj_t * page = lv_canvas_create(lv_scr_act());
    lv_obj_set_size(page, LV_HOR_RES, LV_VER_RES);       //设置为屏幕大小

    lv_coord_t canvas_width = LV_HOR_RES;
    lv_coord_t canvas_height = LV_VER_RES;
    lv_img_cf_t color_format = LV_IMG_CF_TRUE_COLOR ; // ARGB8888格式

    size_t buffer_size = lv_img_cf_get_px_size(color_format) * canvas_width / 8 * canvas_height;

    std::unique_ptr<unsigned char[]> buffer = std::make_unique<unsigned char[]>(buffer_size);
    lv_canvas_set_buffer(page, buffer.get(), canvas_width, canvas_height, color_format);

    lv_draw_rect_dsc_t rect_dsc;
    lv_draw_rect_dsc_init(&rect_dsc);// 初始化矩形样式描述符

    Gradient::Preset set = Gradient::SoftLipstick;
    Gradient::setGradient(set,&rect_dsc);
    lv_canvas_draw_rect(page, 0, 0, LV_HOR_RES, LV_VER_RES, &rect_dsc);// 在Canvas上绘制一个矩形

    while (1)
    {
        lv_timer_handler();
        usleep(5 * 1000);
    }

    return 0;
}

相关内容:

Qt绘图:渐变_qt画圆环并填充颜色-CSDN博客

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用 LVGL(Light and Versatile Graphics Library)来创建渐变效果的进度条。下面是一个使用 LVGL 创建渐变进度条的示例代码: ```c /* 创建一个父容器 */ lv_obj_t *parent = lv_cont_create(lv_scr_act(), NULL); lv_obj_set_size(parent, 200, 30); lv_obj_center(parent); /* 创建一个背景样式 */ static lv_style_t bg_style; lv_style_init(&bg_style); lv_style_set_bg_color(&bg_style, lv_color_hex(0xCCCCCC)); /* 创建一个进度条 */ lv_obj_t *progress_bar = lv_bar_create(parent, NULL); lv_obj_set_size(progress_bar, 180, 20); lv_obj_align(progress_bar, parent, LV_ALIGN_CENTER, 0, 0); lv_bar_set_range(progress_bar, 0, 100); // 设置进度条的范围 lv_bar_set_value(progress_bar, 40, LV_ANIM_ON); // 设置进度条的当前值,并启用动画 /* 创建一个前景样式 */ static lv_style_t fg_style; lv_style_init(&fg_style); lv_style_set_bg_color(&fg_style, lv_color_hex(0xFF0000)); // 设置前景样式为红色 /* 创建一个渐变样式 */ static lv_style_t grad_style; lv_style_init(&grad_style); lv_style_set_bg_grad_color(&grad_style, lv_color_hex(0xFF0000), lv_color_hex(0x00FF00), LV_GRAD_DIR_HOR); // 设置渐变色为红到绿的水平渐变 /* 应用样式到进度条 */ lv_bar_set_style(progress_bar, LV_BAR_STYLE_BG, &bg_style); lv_bar_set_style(progress_bar, LV_BAR_STYLE_INDIC, &grad_style); while (1) { lv_task_handler(); /* 持续更新界面 */ usleep(5000); } ``` 这个示例代码中,我们创建了一个父容器和一个进度条。我们设置进度条的范围为0到100,并将当前值设置为40,启用动画。然后,我们创建了背景样式和前景样式,并使用渐变样式设置进度条的渐变效果。最后,我们将样式应用到进度条上,并使用 `lv_task_handler()` 函数来持续更新界面。 请注意,这只是一个简单的示例代码,你可以根据自己的需求进行修改和扩展。希望对你有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值