大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全家桶1年46,售后保障稳定
画箭头需要注意:
计算箭头两个线的位置和长度与直线或弧线间的位置关系。
1.画直线箭头
关键代码
const int length = 10;//箭头斜着的投影到线上的长度
QVector<QLineF> lines;
lines.append(QLineF(20,height()/2,width()/2,height()/2));
lines.append(QLineF(width()/2-length,height()/2+length,width()/2,height()/2));
lines.append(QLineF(width()/2-length,height()/2-length,width()/2,height()/2));
QPen pen;
pen.setColor(Qt::blue);
pen.setWidthF(3.5);
painter.setPen(pen);
painter.drawLines(lines);
2.画弧线箭头
关键代码
painter.translate(width()/2,height()/2);
painter.setRenderHint(QPainter::Antialiasing);
const int radius = 150;
const int startAngle = 45;
const int spanAngle = 90;
const float PI = 3.14;
const float ratio = 0.5;
QPen pen;
pen.setWidth(3);
pen.setColor(Qt::red);
pen.setCapStyle(Qt::RoundCap);
painter.setPen(pen);
painter.drawArc(QRectF(-radius,-radius,radius*2,radius*2),startAngle*16,spanAngle*16);
QVector<QLineF> lines;
lines.append(QLineF(radius*cos(startAngle*PI/180),-radius*sin(startAngle*PI/180),radius*cos(startAngle*PI/180)-10,-radius*sin(startAngle*PI/180)));
lines.append(QLineF(radius*cos(startAngle*PI/180),-radius*sin(startAngle*PI/180),radius*cos(startAngle*PI/180),-radius*sin(startAngle*PI/180)-10));
painter.drawLines(lines);
painter.translate(width()/2,height()/2);
painter.setRenderHint(QPainter::Antialiasing);
const int radius = 150;
const int startAngle = 45;
const int spanAngle = 90;
const float PI = 3.14;
const float ratio = 0.5;
QPen pen;
pen.setWidth(3);
pen.setColor(Qt::red);
pen.setCapStyle(Qt::RoundCap);
painter.setPen(pen);
painter.drawArc(QRectF(-radius,-radius,radius*2,radius*2),startAngle*16,spanAngle*16);
QVector<QLineF> lines;
// lines.append(QLineF(radius*cos(startAngle*PI/180),-radius*sin(startAngle*PI/180),radius*cos(startAngle*PI/180)-10,-radius*sin(startAngle*PI/180)));
// lines.append(QLineF(radius*cos(startAngle*PI/180),-radius*sin(startAngle*PI/180),radius*cos(startAngle*PI/180),-radius*sin(startAngle*PI/180)-10));
lines.append(QLineF(radius*cos((startAngle+spanAngle)*PI/180),-radius*sin((startAngle+spanAngle)*PI/180),radius*cos((startAngle+spanAngle)*PI/180)+10,-radius*sin((startAngle+spanAngle)*PI/180)));
lines.append(QLineF(radius*cos((startAngle+spanAngle)*PI/180),-radius*sin((startAngle+spanAngle)*PI/180),radius*cos((startAngle+spanAngle)*PI/180),-radius*sin((startAngle+spanAngle)*PI/180)-10));
painter.drawLines(lines);
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/219587.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...