Skip to content

Commit e1b1400

Browse files
committed
Fix rotated canvas scale issue in save as image
1 parent a2327d3 commit e1b1400

File tree

2 files changed

+10
-14
lines changed

2 files changed

+10
-14
lines changed

src/app/qgisapp.cpp

-8
Original file line numberDiff line numberDiff line change
@@ -5804,14 +5804,6 @@ void QgisApp::saveMapAsImage()
58045804
QPair< QString, QString> myFileNameAndFilter = QgisGui::getSaveAsImageName( this, tr( "Choose a file name to save the map image as" ) );
58055805
if ( myFileNameAndFilter.first != QLatin1String( "" ) )
58065806
{
5807-
QSize size = mMapCanvas->size();
5808-
if ( dlg.extent() != mMapCanvas->extent() )
5809-
{
5810-
size.setWidth( mMapCanvas->size().width() * dlg.extent().width() / mMapCanvas->extent().width() );
5811-
size.setHeight( mMapCanvas->size().height() * dlg.extent().height() / mMapCanvas->extent().height() );
5812-
}
5813-
size *= dlg.dpi() / qt_defaultDpiX();
5814-
58155807
QgsMapSettings ms = QgsMapSettings();
58165808
ms.setDestinationCrs( QgsProject::instance()->crs() );
58175809
ms.setExtent( dlg.extent() );

src/app/qgsmapsavedialog.cpp

+10-6
Original file line numberDiff line numberDiff line change
@@ -31,19 +31,23 @@ Q_GUI_EXPORT extern int qt_defaultDpiX();
3131

3232
QgsMapSaveDialog::QgsMapSaveDialog( QWidget *parent, QgsMapCanvas *mapCanvas, const QString &activeDecorations )
3333
: QDialog( parent )
34-
, mExtent( mapCanvas->mapSettings().visibleExtent() )
35-
, mDpi( mapCanvas->mapSettings().outputDpi() )
36-
, mSize( mapCanvas->mapSettings().outputSize() )
3734
{
3835
setupUi( this );
3936

37+
// Use unrotated visible extent to insure output size and scale matches canvas
38+
QgsMapSettings ms = mapCanvas->mapSettings();
39+
ms.setRotation( 0 );
40+
mExtent = ms.visibleExtent();
41+
mDpi = ms.outputDpi();
42+
mSize = ms.outputSize();
43+
4044
mResolutionSpinBox->setValue( qt_defaultDpiX() );
4145

42-
mExtentGroupBox->setOutputCrs( mapCanvas->mapSettings().destinationCrs() );
43-
mExtentGroupBox->setCurrentExtent( mExtent, mapCanvas->mapSettings().destinationCrs() );
46+
mExtentGroupBox->setOutputCrs( ms.destinationCrs() );
47+
mExtentGroupBox->setCurrentExtent( mExtent, ms.destinationCrs() );
4448
mExtentGroupBox->setOutputExtentFromCurrent();
4549

46-
mScaleWidget->setScale( 1 / mapCanvas->mapSettings().scale() );
50+
mScaleWidget->setScale( 1 / ms.scale() );
4751
mScaleWidget->setMapCanvas( mapCanvas );
4852
mScaleWidget->setShowCurrentScaleButton( true );
4953

0 commit comments

Comments
 (0)