@@ -237,27 +237,36 @@ void OnSemanticsNodeClick(SemanticsNode node)
237
237
/// <param name="dirtyRect">The area that needs to be redrawn.</param>
238
238
void DrawRoundedRectangle ( ICanvas canvas , RectF dirtyRect )
239
239
{
240
- if ( itemInfo ? . SegmentTemplate != null || itemInfo == null || itemInfo . StrokeThickness == 0 )
240
+ if ( itemInfo ? . SegmentTemplate != null || itemInfo == null )
241
241
{
242
242
return ;
243
243
}
244
244
245
245
canvas . CanvasSaveState ( ) ;
246
246
canvas . Antialias = true ;
247
247
float strokeRadius = ( float ) itemInfo . StrokeThickness / 2f ;
248
- canvas . StrokeSize = ( float ) itemInfo . StrokeThickness ;
249
- canvas . StrokeColor = SegmentViewHelper . BrushToColorConverter ( itemInfo . Stroke ) ;
250
248
CornerRadius cornerRadius = itemInfo . SegmentCornerRadius ;
251
249
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
257
257
bool isEnabled = SegmentViewHelper . GetItemEnabled ( itemInfo , _segmentItem ) ;
258
258
Brush background = isEnabled ? SegmentViewHelper . GetSegmentBackground ( itemInfo , _segmentItem ) : itemInfo . DisabledSegmentBackground ;
259
259
canvas . FillColor = SegmentViewHelper . BrushToColorConverter ( background ) ;
260
260
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
+
261
270
canvas . CanvasRestoreState ( ) ;
262
271
}
263
272
0 commit comments