在超声软件的开发中,超声成像模块需要绘制圆弧,例如绘制一个扇形的取样框,左右是一条直线,上下是一个圆弧,像这样。
Qt中使用QPainter::drawArc绘制圆弧,使用QPainter::drawPie绘制扇形。
圆弧和扇形的绘制接口输入一致,在调试过程中使用扇形会更直观。
Qt绘制扇形的接口:
void QPainter::drawPie(const QRectF &rectangle, int startAngle, int spanAngle);
void QPainter::drawPie(int x, int y, int width, int height, int startAngle, int spanAngle);
void QPainter::drawPie(const QRect &rectangle, int startAngle, int spanAngle);
扇形的接口入参可以概括为,设置一个矩形区域,开始角度,和偏移角度。
矩形区域
Rectangle矩形区域解释为该扇形或圆弧,对应圆的外接矩形,实际指明了圆心点和半径,圆心点即矩形的中心点。
以一个400*400的画布为例,绘制一个扇形,黑色画布左上角为(0, 0)点,圆心坐标为(200,0)外接矩形为(-30, -230, 460,460)。
扇形的角度
开始角度和偏移角度决定了扇形绘制的弧长,Qt中一个完整的圆分为5760 等分(360*16),在指定角度时,角度数需要乘16,同时需要注意,弧度和角度的转换。
//radian弧度, 将弧度转换为符合Qt的形式
float CoordiUtil::ConvertToQtAngle(float radian)
{//先转成度float angle = ConvertToAngle(radian);//Qt以3点钟为0度,正值逆时针方向,而负值表示顺时针方向float qtAngle = angle - 90;return (qtAngle) * 16;//一个完整的圆等于5760(16 * 360)
}// 将弧度转换为角度,radian弧度
float CoordiUtil::ConvertToAngle(float radian)
{//度=弧度×180°/πconst float PI = 3.1415926f;float angle = radian * 180 / PI;return angle;
}//将角度转换为弧度,angle角度
float CoordiUtil::ConvertToRadian(float angle)
{//弧度=度×π/180const float PI = 3.1415926f;float radian = angle / 180 * PI;return radian;
}
在指定开始角度和偏移角度时,Qt以3点钟为0度,正值表示逆时针方向,而负值表示顺时针方向。