我希望在widget上画两条直线,并且可以旋转;
我的代码如下:
void Widget::paintEvent(QPaintEvent *)
{
QPainter painter(this);
painter.setBrush(Qt::red);
painter.setPen(QPen(Qt::red,Qt::SolidLine));
//L1
painter.translate(100,100);//以指针根部为旋转中心
painter.rotate(Angle1);
painter.translate(-100,-100);//恢复原点
painter.drawLine(50,100,100,100);
//L2
painter.translate(200,100);//以指针根部为旋转中心(移动原点)
painter.rotate(Angle2);
painter.translate(-200,-100);//恢复原点
painter.drawLine(150,100,200,100);
}
实际是第一条线可以正常的旋转,但是第二条线却是很乱;
是不是第一条线处理完了之后要复原一些东西啊,求各位大牛帮忙。
------解决方案--------------------
每次使用完后用painter.restore()进行恢复;
------解决方案--------------------
void Widget::paintEvent(QPaintEvent *)
{
QPainter painter(this);
painter.setBrush(Qt::red);
painter.setPen(QPen(Qt::red,Qt::SolidLine));
//L1
painter.save();
painter.translate(100,100);//以指针根部为旋转中心
painter.rotate(Angle1);
painter.translate(-100,-100);//恢复原点
painter.drawLine(50,100,100,100);
painter.restore();
//L2
painter.save();
painter.translate(200,100);//以指针根部为旋转中心(移动原点)
painter.rotate(Angle2);
painter.translate(-200,-100);//恢复原点
painter.drawLine(150,100,200,100);
painter.restore();
}