我想创建一个 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/