From 6a09bdd32c2b59456fa353937dd4dbfcd8f1d2bc Mon Sep 17 00:00:00 2001 From: wuyize Date: Fri, 17 Mar 2023 12:29:31 +0800 Subject: [PATCH] =?UTF-8?q?FIX:=20GraphicElement=E4=B8=ADpixelRatio?= =?UTF-8?q?=E8=AE=A1=E7=AE=97=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/Editor/GraphicElement.cpp | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/ArchitectureColoredPainting/src/Editor/GraphicElement.cpp b/ArchitectureColoredPainting/src/Editor/GraphicElement.cpp index 6823669..f515210 100644 --- a/ArchitectureColoredPainting/src/Editor/GraphicElement.cpp +++ b/ArchitectureColoredPainting/src/Editor/GraphicElement.cpp @@ -92,7 +92,7 @@ QJsonObject GroupElement::toJson() const return result; } -void SimpleElement::paint(QPainter* painter, QTransform transform, const vector> &styles) +void SimpleElement::paint(QPainter* painter, QTransform transform, const vector>& styles) { painter->save(); painter->setTransform(transform); @@ -102,12 +102,15 @@ void SimpleElement::paint(QPainter* painter, QTransform transform, const vector< } else { - Renderer::ElementStyleStrokeDemo demo(2); std::shared_ptr style; style = styles[0]; - QVector2D scale(transform.m11(), transform.m22()); - scale /= transform.m33(); - double maxScale = std::max(scale.x(), scale.y()); + + double angle = atan(transform.m12() / transform.m11()); + double maxScale; + if (fabs(cos(angle))>1e-5) + maxScale = std::max(fabs(transform.m11() / cos(angle)), fabs(transform.m22() / cos(angle))); + else + maxScale = std::max(fabs(transform.m12() / sin(angle)), fabs(transform.m21() / sin(angle))); double pixelRatio = maxScale * QGuiApplication::primaryScreen()->devicePixelRatio(); auto [img, mov] = Renderer::ElementRenderer::instance()->drawElement(painterPath, *style, pixelRatio); transform.translate(mov.x(), mov.y()); @@ -117,7 +120,7 @@ void SimpleElement::paint(QPainter* painter, QTransform transform, const vector< painter->restore(); } -void GroupElement::paint(QPainter* painter, QTransform transform, const vector> &styles) +void GroupElement::paint(QPainter* painter, QTransform transform, const vector>& styles) { sourceLayer->paint(painter, transform); } @@ -125,7 +128,7 @@ void GroupElement::paint(QPainter* painter, QTransform transform, const vectorpaint(&painter, QTransform(), true); painter.end(); - QRect rect (cache.getBoundingRect().toRect()); + QRect rect(cache.getBoundingRect().toRect()); rect.setTopLeft(rect.topLeft() - QPoint(5, 5)); rect.setBottomRight(rect.bottomRight() + QPoint(5, 5)); result = result.copy(rect);