• 5895阅读
  • 1回复

直接绘图怎么感觉那么的慢啊?有什么办法可以提高绘图效率吗? [复制链接]

上一主题 下一主题
离线huyoujun
 

只看楼主 倒序阅读 楼主  发表于: 2008-03-31
— 本帖被 XChinux 执行加亮操作(2008-03-31) —
直接绘图怎么感觉那么的慢啊?有什么办法可以提高绘图效率吗?

class MyScene : public QWidget
{
    void paintEvent(QPaintEvent *event);
};


void MyScene::paintEvent(QPaintEvent *event)
{
    int index=0;
    QPainter painter(this);
    painter.setRenderHint(QPainter::Antialiasing, true);
    painter.setPen(QPen(Qt::blue, 2, Qt::SolidLine, Qt::RoundCap));
//    painter.setBrush(QBrush(Qt::yellow, Qt::SolidPattern));
    //painter.drawEllipse(80, 80, 400, 240);
    painter.drawLine(RECTWIDTH,this->height()-RECTWIDTH,this->width()-RECTWIDTH,this->height()-RECTWIDTH);
    painter.drawLine(RECTWIDTH,this->height()-RECTWIDTH,RECTWIDTH,RECTWIDTH);
    painter.drawLine(this->width()-RECTWIDTH,this->height()-RECTWIDTH,this->width()-RECTWIDTH*1.5,this->height()-RECTWIDTH*0.5);
    painter.drawLine(this->width()-RECTWIDTH,this->height()-RECTWIDTH,this->width()-RECTWIDTH*1.5,this->height()-RECTWIDTH*1.5);
    painter.drawLine(RECTWIDTH,RECTWIDTH,RECTWIDTH*1.5,RECTWIDTH*1.5);
    painter.drawLine(RECTWIDTH,RECTWIDTH,RECTWIDTH*0.5,RECTWIDTH*1.5);

    painter.setPen(QPen(QColor(12,23,56,23), 1, Qt::DotLine, Qt::RoundCap));
    for(index=2;index<(this->height()/RECTWIDTH);++index)
    {
        painter.drawLine(RECTWIDTH+1,this->height()-RECTWIDTH*(index),this->width()-RECTWIDTH,this->height()-RECTWIDTH*(index));
    }
    for(index=2;index<(this->width()/RECTWIDTH);++index)
    {
        painter.drawLine(RECTWIDTH*(index),this->height()-RECTWIDTH,RECTWIDTH*(index),RECTWIDTH);
    }
}
在线XChinux

只看该作者 1楼 发表于: 2008-03-31
可使用双缓冲,
搜索一下论坛帖子就知道了.
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
快速回复
限100 字节
 
上一个 下一个