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);