在使用QPainter进行绘制时发现问题。当直接使用QPen进行绘制自定义虚线时会出现一个问题:
当绘制的Path遇到界面进行裁剪时,此时虚线线型将会省略裁剪的那一部分,导致自定义虚线在移动以及放大时会自动修改位置。
解决办法:直接使用QPainterPathSkroke。
问题描述如下:
自定义虚线如下。
移动位置后虚线的位置自动变化:
上述错误代码如下:
QPen pen;
pen.setStyle(Qt::CustomDashLine);
pen.setJoinStyle(Qt::RoundJoin);
pen.setCapStyle(Qt::SqareCap);
QVector<qreal> dashlines{30.0,20.0,10.0,20.0};
pen.setDashPattern(dashlines);
painter->setPen(pen);
painter->drawPath(path);
解决方法如下:
QPainterPathStroker stroke;
stroke.setStyle(Qt::CustomDashLine);
stroke.setJoinStyle(Qt::RoundJoin);
stroke.setCapStyle(Qt::SqareCap);
QPainterPath strokePath = stroker.createStroke(path);
QVector<qreal> dashlines{30.0,20.0,10.0,20.0};
strokePath.setDashPattern(dashlines);
painter->setPen(pen);
painter->drawPath(strokePath);
解决后效果如下:
标签:20.0,Qt,stroke,pen,虚线,CustomDashLine,Path From: https://www.cnblogs.com/learning77/p/17785517.html