Qt 绘图大全

Qpen设置画笔

//************ QPen 使 用 ************************************************************
QPen用于绘图时对线条进行设置,主要包括线宽,颜色,线型等,
   //函数原型
   void setColor(QColor &color)        //设置画笔颜色,即线条颜色。
   void setWidth(int width)           //设置线条宽度
   void setStyle(Qt::PenStyle style)   //设置线条样式
   {
      Qt::PenStyle是一种枚举类型,以下是各种枚举。
      Qt::SolidLine;
      Qt::DashLine;
      Qt::DotLine;
      Qt::DashDotLine;
      Qt::DashDotDotLine;
      Qt::CustomDashLine;
   }
   void setCapStyle(Qt::PenCapStyle  style) //设置线条端点样式
   {
     Qt::PenCapStyle是一种枚举类型
     Qt::SquareCap;
     Qt::FlatCap;
     Qt::RoundCap;
   }
   void setJoinStyle(Qt::PenJoinStyle style);  //设置连接样式
   {
     Qt::PenJoinStyle是一个枚举类型
     Qt::BevelJoin;
     Qt::MiterJoin;
     Qt::RoundJoin;
   }

QBrush画刷

//********************************* QBrush 使 用 **************************************
QBrush定义了QPainter绘图时的填充特性,包括填充颜色,填充样式,
  //函数原型
  void setColorr(QColor &color);  //设置画刷颜色
  void setStyle(Qt::BrushStyle style);  //设置画刷样式
  {
    Qt::BrushStyle是一种枚举类型
    Qt::NoBrush;   //不填充
    Qt::SolidPattern  //单一颜色填充
    Qt::HorPattern    //水平线填充
    Qt::VerPattern    //垂直线填充
  }
  void setTexture(QPixmap &pixmap); //设置一个QPixmap类型的图片作为画刷图片
  void setTextureImage(QImage &image); //设置一个QImage类型的图片作为画刷图片
 

抗锯齿

//***************** 抗锯齿 ***********************************************************
    painter.setRenderHint(QPainter::Antialiasing);
    painter.setRenderHint(QPainter::TextAntialiasing);

渐变填充

/************************ 渐 变 填 充 *********************************************************

   QLinearGradient:  线性渐变:指定一个起点和颜色,指定一个终点和颜色
   QRadialGradient:  简单辐射渐变和扩展辐射渐变
   QConicalGradient: 圆锥形渐变

   //线性渐变:
 QLinearGradient    linearGra(QPointF(10,20) , QPointF(90,80));
  linearGra.setColorAt(0 , Qt::yellow);
  linearGra.setColorAt(0.5 , Qt::blue);
  linearGra.setColorAt(1 ,  Qt::yellow);
  painter.setBrush(linearGra);
//辐射渐变
  QRadialGradient
//锥形渐变
  QConicalGradient

绘制图形

/************************** 绘 制 图 形 ***********************************************
//绘制矩形
       //函数原型
       QRect(int left, int top, int width, int height );
       QRect(QPoint &topleft, const QPoint &bottomright);
       //使用
       QRect  rect(10,10,50,50);
       painter.drawRect(rect);
       //绘制圆角矩形
       painter.drawRoundedRect(rect , 25,25 , Qt::RelativeSize);
   
//绘制圆形
       //函数原型
       QPainter::drawEllipse(int x, int y, int w, int h);
       QPainter::drawEllipse(const QPointF &center, qreal rx, qreal ty);
       QPainter::drawEllipse(const QPoint &center, int rx, int ry);
       //使用
       painter.drawEllipse(QPoint(50,0),50,50);

 //画扇形
    int x = -qMin( width(),height() )/2;
    int y = -qMin( width(),height() )/2;
    
    int w = qMin( width(),height() );
    int h = qMin( width(),height() );
    QRectF  pieRect(x,y,w,h);
    painter.drawPie(pieRect,-startrecv*16,36*16)//画扇
//绘制点
       //函数原型
       void drawPoint(const QPointF &position);
       void drawPoint(const QPoint &position);
       void drawPoint(int x,int y);
       void drawPoints(const QPointF *points , int count);
       //使用
       QPoint points[4] = { QPoint(10,80), QPoint(20,10), QPoint(80,30), QPoint(90,70) };
       painter.drawPoints(points , 4);
//绘制线
       //使用
       //绘制多段线
       painter.drawPolyline(points,4);
       //绘制多边形
       painter.drawPolygon(points,4);

设计视口和逻辑窗口

/************************ 设计视口和逻辑窗口***************************************************
    //函数原型
    //设置视口
    QPainter::setViewport(int x, int y, int w, int h);
      //使用
      QRect rect(30,30,60,60);
      painter.setViewport(rect);
      
    //设置窗口,逻辑坐标,前两个参数为左上角的坐标,后两个为宽度和高度
     painter.setWindow(-100,-100,200,200);

路径

 QPainterPath    path;
    path.moveTo(50,250);     //起始点移动到 50,250
    path.lineTo(50,20);   //从起始点画到  50,20
    path.moveTo(80,100);
    //贝塞尔曲线
    path.cubicTo(  QPointF(105,40) ,   QPointF(115,80) ,   QPointF(120,60)  );
    painter.drawPath(path);
    painter.drawPath(path);

    painter.rotate(10);  //坐标系旋转十度,负数逆时针旋转,正数顺时针旋转

    painter.path.translate(200,0);      //平移

    painter.translate(  rect().center()  );  //将坐标原点移动到屏幕中心

  • 20
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值