Qt Qpainter

leofly813 2013-05-10 11:23:32
我希望在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);
}

实际是第一条线可以正常的旋转,但是第二条线却是很乱;
是不是第一条线处理完了之后要复原一些东西啊,求各位大牛帮忙。
...全文
66 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
leofly813 2013-05-10
  • 打赏
  • 举报
回复
呵呵,谢谢两位帮忙 我自己刚刚也解决了 我是在//L2上面加了 painter.translate(100,100);//以指针根部为旋转中心 painter.rotate(0-Angle1); painter.translate(-100,-100);//恢复原点 还是两位的方法专业,结贴散分了
dext 2013-05-10
  • 打赏
  • 举报
回复


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();

}

超开心~ 2013-05-10
  • 打赏
  • 举报
回复
每次使用完后用painter.restore()进行恢复;

16,213

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧