Skip to content

Commit 183d793

Browse files
modified
1 parent 97ce132 commit 183d793

File tree

1 file changed

+14
-6
lines changed

1 file changed

+14
-6
lines changed

maui/src/SegmentedControl/Views/SegmentItemView.cs

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -245,19 +245,27 @@ void DrawRoundedRectangle(ICanvas canvas, RectF dirtyRect)
245245
canvas.CanvasSaveState();
246246
canvas.Antialias = true;
247247
float strokeRadius = (float)itemInfo.StrokeThickness / 2f;
248-
canvas.StrokeSize = (float)itemInfo.StrokeThickness;
249-
canvas.StrokeColor = SegmentViewHelper.BrushToColorConverter(itemInfo.Stroke);
250248
CornerRadius cornerRadius = itemInfo.SegmentCornerRadius;
251249

252250
// Calculate corner radius values, subtracting stroke radius when there's stroke thickness
253-
float cornerRadiusTopLeft = (float)cornerRadius.TopLeft - strokeRadius;
254-
float cornerRadiusTopRight = (float)cornerRadius.TopRight - strokeRadius;
255-
float cornerRadiusBottomRight = (float)cornerRadius.BottomRight - strokeRadius;
256-
float cornerRadiusBottomLeft = (float)cornerRadius.BottomLeft - strokeRadius;
251+
float cornerRadiusTopLeft = itemInfo.StrokeThickness > 0 ? (float)cornerRadius.TopLeft - strokeRadius : (float)cornerRadius.TopLeft;
252+
float cornerRadiusTopRight = itemInfo.StrokeThickness > 0 ? (float)cornerRadius.TopRight - strokeRadius : (float)cornerRadius.TopRight;
253+
float cornerRadiusBottomRight = itemInfo.StrokeThickness > 0 ? (float)cornerRadius.BottomRight - strokeRadius : (float)cornerRadius.BottomRight;
254+
float cornerRadiusBottomLeft = itemInfo.StrokeThickness > 0 ? (float)cornerRadius.BottomLeft - strokeRadius : (float)cornerRadius.BottomLeft;
255+
256+
// Always draw the background
257257
bool isEnabled = SegmentViewHelper.GetItemEnabled(itemInfo, _segmentItem);
258258
Brush background = isEnabled ? SegmentViewHelper.GetSegmentBackground(itemInfo, _segmentItem) : itemInfo.DisabledSegmentBackground;
259259
canvas.FillColor = SegmentViewHelper.BrushToColorConverter(background);
260260
canvas.FillRoundedRectangle(dirtyRect.Left, dirtyRect.Top, dirtyRect.Width, dirtyRect.Height, cornerRadiusTopLeft, cornerRadiusTopRight, cornerRadiusBottomRight, cornerRadiusBottomLeft);
261+
262+
// Only draw stroke if stroke thickness is greater than 0
263+
if (itemInfo.StrokeThickness > 0)
264+
{
265+
canvas.StrokeSize = (float)itemInfo.StrokeThickness;
266+
canvas.StrokeColor = SegmentViewHelper.BrushToColorConverter(itemInfo.Stroke);
267+
}
268+
261269
canvas.CanvasRestoreState();
262270
}
263271

0 commit comments

Comments
 (0)