首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >像这样在堆栈上创建一个小的像素图可以吗?

像这样在堆栈上创建一个小的像素图可以吗?
EN

Stack Overflow用户
提问于 2015-02-22 21:50:10
回答 2查看 38关注 0票数 0

我正在创建一个小的绘画应用程序,我想做一个象棋一样的背景来表示透明度。因为我是Qt和C++的新手,所以我想知道是否可以(性能/内存)在堆栈中创建一个像这样的小像素图:

代码语言:javascript
复制
void GraphicsScene::drawBackground (QPainter *painter, const QRectF&)
{
    QPixmap pix(16, 16);
    QPainter p(&pix);
    p.fillRect(0, 0, 8, 8, Qt::white);
    p.fillRect(8, 0, 8, 8, Qt::gray);
    p.fillRect(0, 8, 8, 8, Qt::gray);
    p.fillRect(8, 8, 8, 8, Qt::white);
    QBrush b(pix);
    painter->fillRect(sceneRect(), b);
}

或者更好的做法是创建一次画笔并将其存储在成员字段中?

EN

回答 2

Stack Overflow用户

发布于 2015-02-22 21:57:56

如果它是一个常量并且是不可变的,我会在某个地方将它创建为一个static const,或者是一个使用std::call_once或类似的static懒惰地初始化的guard。

这可能是过早的优化,但我至少会将其重构为一个自由函数。如果将来确实看到性能问题,您可以使用memoization进行优化,而不必重构所有代码。

票数 0
EN

Stack Overflow用户

发布于 2015-02-22 22:38:17

由于您的代码似乎是可读和正确的,我建议您不要更改它。推迟优化,直到证明性能对于这个特定函数很重要(例如,使用分析器)。

目前,您并没有做任何特别无效的事情;堆栈上欢迎这种大小的对象。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28658546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档