@@ -237,27 +237,36 @@ void OnSemanticsNodeClick(SemanticsNode node)
237237 /// <param name="dirtyRect">The area that needs to be redrawn.</param>
238238 void DrawRoundedRectangle ( ICanvas canvas , RectF dirtyRect )
239239 {
240- if ( itemInfo ? . SegmentTemplate != null || itemInfo == null || itemInfo . StrokeThickness == 0 )
240+ if ( itemInfo ? . SegmentTemplate != null || itemInfo == null )
241241 {
242242 return ;
243243 }
244244
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
252- // Subtracting stroke radius value to resolve the stroke thickness cropping issue.
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 ;
250+ // Calculate corner radius values, subtracting stroke radius when there's stroke thickness
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+ canvas . DrawRoundedRectangle ( dirtyRect . Left , dirtyRect . Top , dirtyRect . Width , dirtyRect . Height , cornerRadiusTopLeft , cornerRadiusTopRight , cornerRadiusBottomRight , cornerRadiusBottomLeft ) ;
268+ }
269+
261270 canvas . CanvasRestoreState ( ) ;
262271 }
263272
0 commit comments