c++ - 如何创建一个在 2d 颜色选择器中返回 2 种颜色之间的颜色的函数?

标签 c++ math colors

我想创建一个 hp 条,当 hp 为满时 (scale=1),rgb 为 100,200,255,(如亮绿色),当 hp 为 0 (scale=0) 时,rgb 为 100,50,0 (深红色):

void getHPBarColor(int startR,int startG,int startB,int endR,int endG,int endB,float scale);

which getHPBarColor(100,200,255,100,50,0,0.5) (half hp) 将返回类似黄色的东西,黄色是颜色选择器中起始颜色和结束颜色之间的颜色。

最佳答案

这取决于您的 Color 类。我假设您有一个简单的 Color 类,它接受 3 个整数(分别为红绿蓝)。这还假设您可以按百分比传递 HP(这是有道理的,因为此函数不一定知道 50hp 是多少,因为最大 HP 可能取决于怪物等)

struct Color
{
    int red;
    int green;
    int blue;

    Color(int r, int g, int b) : red(r), green(g), blue(b) {}

    friend std::ostream& operator << (std::ostream& oss, const Color& clr)
    {
        oss << clr.red << ", " << clr.green << ", " << clr.blue << endl;
        return oss;
    }
};

Color GetHPColor(double dPercent) { return Color(255-(255*dPercent), 0 + 255*dPercent, 0); }

int main() {
    cout << GetHPColor(0.0); // 255, 0, 0 at 0% hp
    cout << GetHPColor(0.5); // 127, 127, 0 at 50% hp
    cout << GetHPColor(1.0); // 0, 255, 0 at 100% hp
    return 0;
}

您选择的颜色可以不同。这是为了让您大致了解如何做到这一点。

关于c++ - 如何创建一个在 2d 颜色选择器中返回 2 种颜色之间的颜色的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29936184/

相关文章:

r - 如何挑选出矩阵中的特定值 [R]

html - 仅使用 CSS 的彩虹文字动画

c++ - 如何组装一串宽字符,中间插入一些空字符?

java - jtype (JNI) 和 C/C++ 的类型有什么区别?

c++ - 通用引用,推断 std::list<T> 和 T

java - 增量数学问题

math - CUDA tgamma函数: is documentation wrong or tgamma isn't a gamma?

c++ - 使用运算符重载 c++ 进行监控

css - JavaFx 如何在 CSS 中使用 java 生成的 RGB 颜色

javascript - 按钮一一着色