c++ - 如何使用 Qt QImage 和 QBrush 渲染自定义背景?

标签 c++ qt

我正在尝试使用 QImage 为 QT 渲染自定义图像,但到目前为止我的代码没有任何进展。我不想从文件加载图像,我想使用 QImage 类和 QBrush 类以及这需要的其他内容。我不太擅长在 API 中进行渲染,但如果能帮助我继续前进,我们将不胜感激。

这是我得到的。我真正得到的唯一东西是图像“m_pImage”对象...

m_pImage = new QImage(ImageWidth, ImageHeight, QImage::Format_Indexed8);
m_pImage->setColorCount(255);

此外,我尝试添加一些类似这样的内容,但这部分不起作用:

QBrush* br = new QBrush(Qt::gray, Qt::Dense3Pattern);
br->setTextureImage(*m_pImage);
QPainter* paint = new QPainter(m_pImage);
paint->setPen(Qt::NoPen);
paint->setBrush(*br);
paint->drawRect(0, 0, ImageWidth, ImageHeight);
for(int i = 0; i < m_ulImageWidth; i++)
{
    for(int j = 0; j < ImageHeight; j++)
    {
        m_pImage->setPixel(i, j, qRgb(255, 255, 255));
    }
}

最好设置背景图像,但在任何一种情况下,只获取此图像来渲染笔刷样式 Dense3Pattern 都是最好的。

这是我一直在使用的文档的链接 QT Reference

提前致谢!

最佳答案

呃,我现在明白我的问题了。

所以我需要将我想使用的所有颜色添加到我的 colorTable 中。在我这样做之后,我就可以使用 QImage::setPixel(...) 开始绘图了。

for(int i = 0; i < 255; i++)
{
    m_pImage->setColor(i, qRgb(i, i, i));
}

我想这就是全部!

关于c++ - 如何使用 Qt QImage 和 QBrush 渲染自定义背景?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12643997/

相关文章:

c++ - 终止 QProcess 不会杀死子进程

c++ - Qt交互渲染点、线、线段

C++ - 通过指针表示所有权

c++ - 我应该期望 CentOS6 和 CentOS7 之间 fstream 异常处理的不同行为吗?

java - 内部路径长度

qt - 向 QString 添加常量

c++ - 将十六进制字符串转换为 QByteArray

c++ - 非 ASCII 字符 - 从 std::string 到 char* 的转换

qt - 将 QTQuick 与 haskell 一起使用

qt - 如何正确调整 Qt 小部件的大小?