Skip to content

Изображение

image нужен для единообразного отображения пиктограмм с учетом визуальной темы. Например button использует image для рисования пиктограмм на себе. image рисует себя из ресурса, соответствующего визуальной теме.

Пример использования image: Создаем в конструкторе содержащего image класса

logoImage(new wui::image(IMG_LOGO))...

IMG_LOGO определен в resourse.h приложения следующим образом:

#ifdef _WIN32
#define IMG_LOGO                  109
#else // _WIN32
static constexpr const char* IMG_LOGO = "logo.png";
#endif

Таким образом, изображение будет взято из ресурса exe на Windows или из файла на других системах. Магия смены изображения при смене темы реализована следующим образом. image имеет в theme свои настройки:

light.json:

{
    "type": "image",
    "resource": "IMAGES_LIGHT",
    "path": "res/images/light"
}

dark.json:

{
    "type": "image",
    "resource": "IMAGES_DARK",
    "path": "res/images/dark"
}

Путь к файлу ресурса составляется из пути указанном в theme и имени файла в image что приводит к автоматической замене всех изображений приложения при смене темы. На Windows стоит упомянуть как организован rc файл приложения.

IMG_LOGO IMAGES_DARK   "res\\images\\dark\\logo.png"
IMG_LOGO IMAGES_LIGHT  "res\\images\\light\\logo.png"

Таким образом, замена группы IMAGES_DARK / IMAGES_LIGHT вызывает аналогичный эффект как с файлами, без необходимости менять ID ресурса.