?
painter->translate(50, 50);
painter->save();
painter->rotate(45);
painter->drawLine(0, -5, 0, -20);
painter->restore();
painter->drawLine(0, -5, 0, -20);
因为座标变换会带来浮点误差,所以做好save,restore工作是必要的。
有趣的是,变换方法互相也会影响。
?
painter->setPen(QPen(Qt::black, 4));
painter->translate(50, 10);
painter->drawText(0, 0, tr("1"));
painter->translate(0, 50);
painter->drawRect(0,0,5,5);
painter->rotate(45);
painter->translate(0, -50);
painter->drawText(0, 0, tr("2"));
我们可以用QTransform类把座标变化存下来,以便反复使用。
?
QTransform transform;
transform.translate(50, 50);
transform.rotate(45);
painter->setWorldTransform(transform);
painter->drawLine(0, -5, 0, -20);
还有一个有用的方法是painter的worldTransform(),能得到这个画笔当前的变换矩阵。