微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ImU32 上的 ImGui ColorPicker

如何解决ImU32 上的 ImGui ColorPicker

ImGui 中的颜色选择器适用于浮点向量。

bool ColorPicker3(const char* label,float col[3],ImGuiColorEditFlags flags = 0);

但是我将颜色数据存储在无符号整数中。

如何让 ColorPicker3 处理 ImU32 值?

请注意,ImGUI 是一个即时模式 API,因此它会更改您下面的值,这意味着不容易引入转换步骤。

解决方法

包起来?

bool ColorPicker3U32(const char* label,ImU32* color,ImGUIColorEditFlags flags = 0) {
   float col[3];
   col[0] = (float)((*color >>   ) & 0xFF) / 255.0f;
   col[1] = (float)((*color >> 8 ) & 0xFF) / 255.0f;
   col[2] = (float)((*color >> 16) & 0xFF) / 255.0f; 

   bool result = ColorPicker3(label,col,flags);

   *color = ((ImU32)(col[0] * 255.0f)      ) |
            ((ImU32)(col[1] * 255.0f) <<  8) |
            ((ImU32)(col[2] * 255.0f) << 16);

   return result;
}

或类似的东西。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。