Qt中的QGraphicsScene的setpixel

时间:2012-02-04 09:32:59

标签: qt pixel qgraphicsview qgraphicsscene

使用scene.addellipse()等绘制直线或椭圆很简单。

QGraphicsScene scene(0,0,800,600);
QGraphicsView view(&scene);
scene.addText("Hello, world!");
QPen pen(Qt::green);
scene.addLine(0,0,200,200,pen);
scene.addEllipse(400,300,100,100,pen);
view.show();

现在我该怎么做才能设置一些像素颜色?我可以使用像qimage这样的小部件吗?顺便说一下,表演对我来说是一个问题。谢谢

1 个答案:

答案 0 :(得分:1)

我认为在QImage上执行像素操作会大大减慢你的应用程序的速度。一个很好的选择是在新类中加上QGraphicsItem的子类,例如QGraphicsPixelItem,并像这样实现paint函数:

// code untested

void QGraphicsPixelItem::paint(QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget = 0)
{
    painter->save();

    foreach(const QPoint& p, pointList) {            
        // set your pen color etc.
        painter->drawPoint(p);
    }

    painter->restore();
}

其中pointList是某种容器,用于存储您想要绘制的像素的位置。