@@ -40,30 +40,33 @@ void QgsTicksScaleBarRenderer::draw( QgsRenderContext &context, const QgsScaleBa
4040
4141 QPainter *painter = context.painter ();
4242
43- double barTopPosition = QgsComposerUtils::fontAscentMM ( settings.font () ) + settings.labelBarSpace () + settings.boxContentSpace ();
44- double middlePosition = barTopPosition + settings.height () / 2.0 ;
45- double bottomPosition = barTopPosition + settings.height ();
43+ double barTopPosition = context. convertToPainterUnits ( QgsComposerUtils::fontAscentMM ( settings.font () ) + settings.labelBarSpace () + settings.boxContentSpace (), QgsUnitTypes::RenderMillimeters );
44+ double middlePosition = barTopPosition + context. convertToPainterUnits ( settings.height () / 2.0 , QgsUnitTypes::RenderMillimeters ) ;
45+ double bottomPosition = barTopPosition + context. convertToPainterUnits ( settings.height (), QgsUnitTypes::RenderMillimeters );
4646
47- double xOffset = firstLabelXOffset ( settings );
47+ double xOffset = context. convertToPainterUnits ( firstLabelXOffset ( settings ), QgsUnitTypes::RenderMillimeters );
4848
4949 painter->save ();
5050 if ( context.flags () & QgsRenderContext::Antialiasing )
5151 painter->setRenderHint ( QPainter::Antialiasing, true );
5252
53- painter->setPen ( settings.pen () );
53+ QPen pen = settings.pen ();
54+ pen.setWidthF ( context.convertToPainterUnits ( pen.widthF (), QgsUnitTypes::RenderMillimeters ) );
55+ painter->setPen ( pen );
5456
5557 QList<double > positions = segmentPositions ( scaleContext, settings );
5658
5759 for ( int i = 0 ; i < positions.size (); ++i )
5860 {
59- painter->drawLine ( QLineF ( positions.at ( i ) + xOffset, barTopPosition,
60- positions.at ( i ) + xOffset, barTopPosition + settings.height () ) );
61+ painter->drawLine ( QLineF ( context.convertToPainterUnits ( positions.at ( i ), QgsUnitTypes::RenderMillimeters ) + xOffset, barTopPosition,
62+ context.convertToPainterUnits ( positions.at ( i ), QgsUnitTypes::RenderMillimeters ) + xOffset,
63+ barTopPosition + context.convertToPainterUnits ( settings.height (), QgsUnitTypes::RenderMillimeters ) ) );
6164 }
6265
6366 // draw last tick and horizontal line
6467 if ( !positions.isEmpty () )
6568 {
66- double lastTickPositionX = positions.at ( positions.size () - 1 ) + scaleContext.segmentWidth + xOffset;
69+ double lastTickPositionX = context. convertToPainterUnits ( positions.at ( positions.size () - 1 ) + scaleContext.segmentWidth , QgsUnitTypes::RenderMillimeters ) + xOffset;
6770 double verticalPos = 0.0 ;
6871 switch ( mTickPosition )
6972 {
@@ -78,9 +81,10 @@ void QgsTicksScaleBarRenderer::draw( QgsRenderContext &context, const QgsScaleBa
7881 break ;
7982 }
8083 // horizontal line
81- painter->drawLine ( QLineF ( xOffset + positions.at ( 0 ), verticalPos, lastTickPositionX, verticalPos ) );
84+ painter->drawLine ( QLineF ( xOffset + context.convertToPainterUnits ( positions.at ( 0 ), QgsUnitTypes::RenderMillimeters ),
85+ verticalPos, lastTickPositionX, verticalPos ) );
8286 // last vertical line
83- painter->drawLine ( QLineF ( lastTickPositionX, barTopPosition, lastTickPositionX, barTopPosition + settings.height () ) );
87+ painter->drawLine ( QLineF ( lastTickPositionX, barTopPosition, lastTickPositionX, barTopPosition + context. convertToPainterUnits ( settings.height (), QgsUnitTypes::RenderMillimeters ) ) );
8488 }
8589
8690 painter->restore ();
0 commit comments