作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用
QImage::setPixel(x, y, uint index_or_rgb); // http://qt-project.org/doc/qt-4.8/qimage.html#setPixel-2
但我不知道如何将 rgb 值转换为 uint。如何将 RGB 值转换为 uint?
QColor *c = new QColor(185, 20, 120);
image.setPixel(i, i2, c->value()); // this doesnt work
最佳答案
1.
参见QImage::setPixel
的文档:
If the image's format is either monochrome or 8-bit, the given index_or_rgb value must be an index in the image's color table, otherwise the parameter must be a QRgb value.
我假设您的图像既不是单色也不是8位,因此您需要获取QRgb
值(这是unsigned int
的typedef)。
2.
接下来,如果您查看 QColor
文档,您会注意到 QColor
中的 QRgb
值> 应使用 rgb()
获取(如果您在图像中使用 alpha channel ,则使用 rgba()
)。
3.
请注意,不应使用new
创建QColor
。它通常在堆栈上创建并按值传递。因此您的代码应更正如下:
QColor c(185, 20, 120);
image.setPixel(i, i2, c.rgba());
另请注意,value()
不会返回整个 QColor
的表示形式。它只返回 QColor
的 HSV 表示的 3 个组成部分之一。看来 value()
与您的用例完全无关。
关于qt - 如何将 rgb 转换为 uint index_or_rgb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17431837/
我是一名优秀的程序员,十分优秀!