123456

 

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完全一致。
 
 
 
 
 

 


 

posted on 2011-12-13 10:42  hgy413  阅读(732)  评论(0编辑  收藏  举报

导航