我在Qt中剪裁时遇到问题。我有一个小部件,我在其中绘制了一大排矩形。由于我只是不时地改变几个矩形,所以我只想绘制小部件的一小部分(仅限这些矩形),并将绘制区域剪切到这些部分。在小部件的paintEvent中剪切
如果矩形自上一次绘画以来接收到新的颜色,则isNew()
函数为true。
void Environment::paintEvent(QPaintEvent *event)
{
QPainter painter (this);
Tile t;
//paint the matrix
for(int i=0; i<size; ++
t = matrix[i+j*yizeY];
if(t.isNew()){
painter.setClipRegion(QRegion(t.getRect()));
painter.setBrush(t.getColor());
painter.drawRect(t.getRect());
t.used();
}
}
}
我在做什么错?当我使用setClipRegion(...)
函数时,我的程序运行速度更慢。
但为什么你使用'clipRegion'?你有什么收获? IMO什么都没有在这段代码中,你不会夹任何东西,你只是强制执行无用的检查来削减什么只会削弱性能。 – 2015-02-09 22:50:20
@Mark R.我了解'clipRegion'错误。我认为这会阻止该程序绘制新的东西。相反,它只是检查裁剪区域,并且不允许更改。你是对的。这放慢了程序。 – Jonas 2015-02-21 12:16:34
您正在设置与所绘制的矩形相等的剪辑区域。在这个代码只剪辑心脏的表现,没有任何被剪切。 – 2015-02-21 19:34:56