QPainter 多线段绘画实现

Qt 关键接口:  QPainter  drawline()....   QVector<QPoint> list
程序思路     通过鼠标的三事件   按下  移动  释放 分别获取    线段的起始点与终点 
 注意 list  存储线段数据 只在 按下和 释放事件中进行存取  
随后在 paintevent 事件中进行 遍历处理


 void MainWindow::mousePressEvent(QMouseEvent *event)
{
     line_list <<event->pos() ;
      start_point = event->pos();
}


 void MainWindow::mouseReleaseEvent(QMouseEvent *event)
{

    mouse_flag = false ;

    line_list <<event->pos() ;
    end_point = event->pos();
    int CMD = 3 ;
    int data[2] = {event->pos().x(),event->pos().y()};
    int len  =sizeof(data);
    client.write((char*)&CMD,4);
    client.write((char *)&len,4);
    client.write((char* )data,len);
    client.waitForBytesWritten();
    repaint();

}
 void MainWindow::mouseMoveEvent(QMouseEvent *event)
{
     if(mouse_flag)
    {
    list.append(event->pos());
    end_point = event->pos();
    }
    repaint();
}


void  MainWindow::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);

    QPen pen(QColor::fromRgb(0,0,0));
    pen.setWidth(6);
    painter.setPen(pen);

   painter.drawLine(start_point,end_point);

  if(line_list.count() >= 2 )
  for(int  i = 0 ; i < line_list.count()-1 ; i+=2)
  painter.drawLine(line_list[i],line_list[i+1]);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值