diff --git a/frameworks/core/components_ng/pattern/shape/line_layout_algorithm.cpp b/frameworks/core/components_ng/pattern/shape/line_layout_algorithm.cpp index 8866aae54fc42b0025d90879e9f1b3f53066234f..93f97c4ea3e6d0190d91ed699c3c97260fb7ab2b 100644 --- a/frameworks/core/components_ng/pattern/shape/line_layout_algorithm.cpp +++ b/frameworks/core/components_ng/pattern/shape/line_layout_algorithm.cpp @@ -19,6 +19,10 @@ #include "core/components_ng/pattern/shape/line_paint_property.h" namespace OHOS::Ace::NG { +namespace { +const Dimension DEFAULT_STROKE_WIDTH(1, DimensionUnit::PX); +} // namespace + std::optional LineLayoutAlgorithm::MeasureContent( const LayoutConstraintF& contentConstraint, LayoutWrapper* layoutWrapper) { @@ -31,17 +35,25 @@ std::optional LineLayoutAlgorithm::MeasureContent( CHECK_NULL_RETURN(host, std::nullopt); auto paintProperty = host->GetPaintProperty(); CHECK_NULL_RETURN(paintProperty, std::nullopt); + auto strokewidth = static_cast(paintProperty->GetStrokeWidthValue(DEFAULT_STROKE_WIDTH).ConvertToPx()); + if (paintProperty->HasStrokeWidth()) { + strokewidth = paintProperty->GetStrokeWidthValue().ConvertToPx(); + } PointF startPoint = PointF(paintProperty->GetStartPointValue().first.ConvertToPx(), paintProperty->GetStartPointValue().second.ConvertToPx()); PointF endPoint = PointF( paintProperty->GetEndPointValue().first.ConvertToPx(), paintProperty->GetEndPointValue().second.ConvertToPx()); - auto width = startPoint.GetX() > endPoint.GetX() ? (startPoint.GetX() - endPoint.GetX()) : (endPoint.GetX() - startPoint.GetX()); auto height = startPoint.GetY() > endPoint.GetY() ? (startPoint.GetY() - endPoint.GetY()) : (endPoint.GetY() - startPoint.GetY()); - + if (strokewidth > width) { + width = strokewidth; + } + if (strokewidth > height) { + height = strokewidth; + } return SizeF(width, height); } } // namespace OHOS::Ace::NG