已知 QColor color; int32_t rgba = (color.red() << 16) | (color.green() << 8) | color.blue() | (color.alpha() << 24); 如何通过int反解出coolor
时间: 2024-01-23 08:04:18 浏览: 33
可以使用以下代码将int32_t类型的rgba值转换回QColor类型的color值:
```
int32_t rgba = ...; // 给定的rgba值
int red = (rgba >> 16) & 0xff;
int green = (rgba >> 8) & 0xff;
int blue = rgba & 0xff;
int alpha = (rgba >> 24) & 0xff;
QColor color(red, green, blue, alpha);
```
上述代码中,首先使用右移操作符和按位与操作符,从rgba值中分离出red、green、blue和alpha分量的值。然后,使用QColor类的构造函数,将这些分量的值传递给构造函数,创建一个新的QColor对象。
相关问题
Qt int32表示rgba
Qt中的int32类型通常用于表示32位的整数,而不是RGBA颜色。RGBA颜色通常使用32位整数或四个8位整数(即一个字节)来表示,分别表示红、绿、蓝和透明度通道。例如,可以使用以下代码将RGBA颜色转换为int32类型:
```
QColor color(Qt::red);
int32_t rgba = (color.red() << 16) | (color.green() << 8) | color.blue() | (color.alpha() << 24);
```
此代码将Qt中的QColor类型转换为一个int32_t类型,并将RGBA颜色编码到其中。请注意,这只是一种可能的方法,具体的实现方式可能因使用的平台和库而异。
QColor color; penColors.append(color);// QColor&lastColor = penColors.last();//拿到新颜色 lastColor=QColorDialog::getColor(Qt::red, this,tr("颜色对话框"),QColorDialog::ShowAlphaChannel); _penColors.append(1);int k=0;QPen pen; for(int c = 0;c<penColors.size();++c) { if(_penColors.at(c)==1) pen.setColor(penColors.at(k++)); } p.setPen(pen);
根据您提供的代码,似乎您想根据 `_penColors` 中的值选择 `penColors` 中的颜色,并将其应用于 `QPen` 对象。根据这个理解,以下是修正后的代码:
```cpp
QVector<QColor> penColors;
QVector<int> _penColors;
QColor color;
penColors.append(color);
QColor& lastColor = penColors.last();
lastColor = QColorDialog::getColor(Qt::red, this, tr("颜色对话框"), QColorDialog::ShowAlphaChannel);
_penColors.append(1);
QPen pen;
int k = 0;
for (int c = 0; c < _penColors.size(); ++c) {
if (_penColors.at(c) == 1 && k < penColors.size()) {
pen.setColor(penColors.at(k++));
}
}
p.setPen(pen);
```
修正后的代码中,我们首先通过 `QColorDialog::getColor` 获取一个新的颜色,并将其添加到 `penColors` 容器中。然后,我们遍历 `_penColors` 容器,如果对应位置的值为 1,并且 `k` 的值小于 `penColors` 的大小,我们就从 `penColors` 中获取颜色,并将其设置为 `pen` 的颜色。最后,我们使用 `p.setPen(pen)` 将 `pen` 应用于某个绘图对象。
请注意,根据您的需求和代码逻辑,您可能需要进一步调整代码以满足您的要求。此处提供的修正代码只是基于我对您提供的代码的理解。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)