在表盘内侧绘制刻度

需要在角度a的表盘内侧书写字符串,字符串的位置在图中用文本框示意出来。

将文本框的位置设置为如下位置:该角度的半径经过文本框的中心,文本框的宽和长可以由字体和字符串获得。文本框与半径的交点分别为 j1和j2。

我们实际要获取的是 文本框的位置,我的思路是先获得  j1 到j2的长度, 圆心到j1的长度可以由半径减去刻度线长度得到。知道这两者,即可获得 圆心到矩形中心的距离。

然后根据三角函数公式,计算得到 矩形框中心的 坐标。因矩形框宽、长已知,可以计算得到矩形框的 rect(x,y,w,h)

矩形框与半径相交有以下图中三种情况,

分析三图得到如下代码

painter->translate(0,0);
QFont font = painter->font();
QFontMetricsF fm(font);
double w = fm.size(Qt::TextSingleLine,str).width(); //str 为文本内容
double h = fm.size(Qt::TextSingleLine,str).height();
double length1 = w/cosa;
double length2 = h/sina;
double length = (fabs( length1 )>fabs(length2 )?fabs( length2 ):fabs(length1 ));


double middlex = (m_radius - 15- length /2)*cosa;
double middley = -(m_radius - 15 - length /2)*sina;

QRectF  rectf(middlex - w/2,middley-h/2,w,h);   
painter->drawText(rectf, str);

调试好第一象限,其它象限公式通用,表盘显示效果如下:

 目前还没有发现缺陷。

 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值