画三角形难度不大,但是涉及到圆角就有点难,使用qpainter的时候,发现画圆角矩形很方便,但是没有找到画圆角三角形的相关接口。
在网上借鉴了很多计算各种外切圆、内切圆,圆弧乱七八糟的,最后决定总和一下,自己动手画一个,先上效果图。
思路主要是画三角形的三个角的内切圆,打算传入等腰三角形的底边长、等腰三角形的高,和等腰三角形的高的中心点来获取等腰三角型的绘制路径。
为什么要强调等腰三角形呢?因为我数学太烂了,就爱搞特殊!
//返回两点之间的距离
double TrangleWidget::getPointDistance(QPointF a, QPointF b){
return (double) sqrt(pow(a.x()-b.x(),2)+pow(a.y()-b.y(), 2));
}
//根据点 a, b, c位置距离为ab, bc, ac获取a点角度
double TrangleWidget::getAngle(double ab,double ac, double bc){
return (double) acos((ab*ab+ac*ac-bc*bc)/(2*ab*ac));
}
//根据等腰三角形的高的中心点pCenter,底边长lenth,高height,和圆角半径radius获取等腰三角形的绘制路径
QPainterPath TrangleWidget::getRoundedTranglePath(QPointF pCenter, qreal lenth, qreal height, qreal radius)