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

时间:2015-04-29 06:44:52

标签: c++ math colors

我想创建一个hp bar,当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);

getHPBarColor(100,200,255,100,50,0,0.5)(半个hp)会返回黄色,黄色是颜色选择器中起始颜色和最终颜色之间的颜色。

1 个答案:

答案 0 :(得分:1)

这取决于您的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;
}

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