• QT学习9:绘制函数


     
    void CannonField::paintEvent(QPaintEvent *)
    {
    	// -------------------------------------
    	// QPaintEvent包含一个必须被刷新的窗口部件的区域
        // QPainter默认只能在paintEvent里面调用
    	// -------------------------------------
    	//QString s = "Angle = " + QString::number(ang);
    	//QPainter p(this);
    	//p.drawText(200, 200, s);
    
    	QPainter p(this);
    
    	//当QPainter填满一个矩形,圆或者其他无论什么,它会用它的画刷填满这个图形,这里为蓝色
    	p.setBrush(Qt::blue);
    
        //NoPen表示什么都不画.
    	p.setPen(Qt::PenStyle::NoPen);
    
    	//这个移的是坐标系,相当于rect()的QRect,在做所有的运算时,都先要offerset(-0, -rect().bottom())
    	//所以有效区域总是rect()的y为负值,x还是正值(-0)
    	//-- hgy notes.
    	p.translate(0, rect().bottom());
    
    	//0为起始角度(实际单位为1/16度),零度位在3点钟方向,所以90*16为90度
    	//QRect中x从(-35到0)这一段由上面分析知是无效的,所以不会绘出来,
    	// -- hgy notes.
    	p.drawPie(QRect(-35,-35, 70, 70),0, 90*16);
    
        //rotate是旋轩坐标系.
    	p.rotate(-ang);
    	p.drawRect(QRect(35, -8, 15, 8));
    
    }

    1.绘制圆和椭圆

    	p.setPen(QPen(Qt::yellow, 4, Qt::SolidLine));
    	p.drawEllipse(0, 100, 100, 100);
    第1,2个参数分别表示圆/椭圆距左上角的像素数。第3,4个参数表示圆/椭圆的宽度和高度。更加确切地表述,这个圆或椭圆是在矩形中,这个矩形的左上角的顶点在坐标轴中的位置为(0,100),这个圆或椭圆的中心为这个矩形的中心
     
    2.绘制圆角矩形
     
    	p.setPen(QPen(Qt::yellow, 4, Qt::SolidLine));
    	p.drawRoundRect(0, 100, 100, 100, 50, 50);

    最后两个参数决定角的圆度。xRadius and yRadius are specified in percentage of half the rectangle's width and height respectively, and should be in the range 0.0 to 100.0.也就是长宽一半的百分比,都为100,那就变成圆了!
     
    3.绘制扇形图
     
    	p.setPen(QPen(Qt::yellow, 4, Qt::SolidLine));
    	p.drawPie(0,0, 70, 70, 0, 90*16);
     
    前四个参数定义圆(与drawEllipse()函数相同)。后两个参数定义圆的样式。0为起始角度(实际单位为1/16度),90*16为扇形所展开的角度90度(单位也为1/16度),
    零度位在3点钟方向。
     
    4.绘制弦
     
    	p.setPen(QPen(Qt::yellow, 4, Qt::SolidLine));
    	p.drawChord(0,0, 70, 70,0, 90*16);

    参数和drawPie完全一致。
     
    5.绘制圆弧
     
    	p.setPen(QPen(Qt::yellow, 4, Qt::SolidLine));
    	p.drawArc(0,0, 70, 70,0, 90*16);

    参数和drawPie完全一致。
     
     
     
     
     


     

  • 相关阅读:
    HDU_2191_多重背包
    HDU_1494_dp
    POJ_1088_dfs
    所有的畅通工程[HDU1232][HDU1874][HDU1875][HDU1879]
    畅通工程[HDU1863]
    还是畅通工程[HDU1233]
    最小生成树
    Who's in the Middle[HDU1157]
    Bungee Jumping[HDU1155]
    Is It A Tree?[HDU1325][PKU1308]
  • 原文地址:https://www.cnblogs.com/hgy413/p/3693568.html
Copyright © 2020-2023  润新知