Unsigned Int and Colors
Unsigned Int and Colors
我试图改变使用无符号int (0xFF998877等)的形式0xAABBGGRR的东西的颜色,其中A是Alpha和B, G和R是蓝色,绿色和红色。
我想知道最好的方法是改变我传入的颜色慢慢变深或变浅。
由于我对unsigned int没有太多这样的经验,我的解决方案是简单地将值减去1,但这会产生奇怪的结果。是否有一个好的方法,只改变RGB元素和保持Alpha常数?我确实,在我的少量研究中,发现我可以将其他无符号整型相乘来产生我的最终结果,例如(0xFF * 0x99 * 0x99 * 0x99),但这仍然在最终结果中留下了alpha值变量。
任何帮助都非常感谢!
你需要做的是将你的颜色转换为HSL(或HSV),然后根据你的需要改变亮度(或值)。然后你需要把它转换回RGB。
在互联网上有大量的代码可以用来做这种转换。如果你有问题,我可以给你提供一些我自己的代码
我对c++中的颜色操作一无所知,但你不能简单地使用位掩码吗?或者写一个类,表示使用4 UINT8 (unsigned char)的颜色?然后,您可以轻松地编写各种不同通道的操作。
它也会成为一个伟大的API:
Colour c(128,50,50,0);
c.saturateRed(10);
c.darkerBySteps(3);
c.desaturateGreen(10);
UINT32 rawColVal = c.getRawValue();
相关文章:
- C++核心准则 C35 对于接口类"A base class destructor should be either public and virtual, or protected and nonv
- 为什么C++逐位AND运算符在不同大小的操作数中表现为这样
- 为什么 Clang 不允许"and"作为函数名称?
- 位阵列上的快速AND运算
- 是否可以在 C++03 中定义'move-and-swap idiom'等效项
- BoostPython and CMake
- OpenSSL BIO and SSL_read
- Gurobi GRBModel and GRBmodel in C++
- std::visit and std::variant usage
- SHBrowseForFolder with BIF_BROWSEFORCOMPUTER and SHGetPathFr
- Directx12 and keystrokes
- different between int **arr =new int [ n]; and int a[i][j]?
- C++ getenv and setenv
- Inference pytorch C++ with alexnet and cv::imread image
- Visual Studio 2019 C++ and std::filesystem
- 保证逻辑 AND 表达式中的函数调用
- python ctypes and C++ pointers
- C++ const char with .begin() and .end()
- Threads with Classes and std::packaged_task
- Unsigned Int and Colors