A beautiful, highly customizable circular progress bar control for .NET MAUI with multiple shapes (Circular, Arch, Flat), custom colors, rounded/flat edges, and smooth rendering. Perfect for dashboards, data visualization, and progress tracking in cross-platform applications.
$ dotnet add package Control.MauiCircularProgressView.NetA beautiful, highly customizable circular progress bar control for .NET MAUI applications with multiple shape options, custom colors, and smooth rendering.
![]()

Install-Package Maui.CircularProgress.Net
dotnet add package Maui.CircularProgress.Net
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:controls="clr-namespace:Maui.CircularProgress.Net.Controls;assembly=Maui.CircularProgress.Net"
x:Class="YourApp.MainPage">
<!-- Your content here -->
</ContentPage>
<controls:CircularProgressBar
Progress="75"
MaxProgress="100"
ProgressColor="Green"
ProgressLeftColor="LightGreen"
Size="140"
TextColor="DarkGreen"
Thickness="10"
ShowText="True"
ProgressEdgeShape="Round"
Shape="Circular" />
That's it! You now have a beautiful circular progress bar displaying "75/100".
| Property | Type | Default | Description |
|---|---|---|---|
Progress | int | 0 | Current progress value |
MaxProgress | int | 100 | Maximum progress value |
Size | int | 100 | Diameter of the circle (or width for flat bars) |
Thickness | int | 10 | Thickness of the progress ring/bar |
ProgressColor | Color | Blue | Color of the completed progress |
ProgressLeftColor | Color | LightGray | Color of the remaining progress |
TextColor | Color | Black | Color of the progress text |
ShowText | bool | true | Show or hide the progress text |
ProgressEdgeShape | LineCap | Butt | Edge style: Butt (flat) or Round (rounded) |
Shape | ProgressBarShape | Circular | Shape: Circular, Arch, or Flat |
Perfect for general progress tracking, loading indicators, and percentage displays.
<controls:CircularProgressBar
Progress="65"
Shape="Circular"
ProgressColor="#6B4EFF"
ProgressLeftColor="#E0E7FF"
Size="150"
Thickness="12"
ProgressEdgeShape="Round" />
Ideal for gauges, speedometers, and dashboard displays.
<controls:CircularProgressBar
Progress="45"
Shape="Arch"
ProgressColor="#FB923C"
ProgressLeftColor="#FED7AA"
Size="150"
Thickness="13"
ProgressEdgeShape="Round" />
Great for linear progress tracking, downloads, and uploads.
<controls:CircularProgressBar
Progress="80"
Shape="Flat"
ProgressColor="#10B981"
ProgressLeftColor="#D1FAE5"
Size="200"
Thickness="20" />
<controls:CircularProgressBar
Progress="75"
ProgressColor="#3B82F6"
ProgressLeftColor="#DBEAFE"
Size="120"
Thickness="10"
ProgressEdgeShape="Round" />
Displays: 75/100
<controls:CircularProgressBar
Progress="250"
MaxProgress="500"
ProgressColor="#8B5CF6"
ProgressLeftColor="#EDE9FE"
Size="140"
Thickness="12" />
Displays: 250/500
<controls:CircularProgressBar
Progress="90"
ShowText="False"
ProgressColor="#EF4444"
ProgressLeftColor="#FEE2E2"
Size="100"
Thickness="8" />
Create beautiful data visualizations by overlaying multiple progress bars:
<Grid WidthRequest="200" HeightRequest="200">
<!-- Outer Circle - Category 1 -->
<controls:CircularProgressBar
Progress="9700"
MaxProgress="15000"
ProgressColor="#6B4EFF"
ProgressLeftColor="#EDD9FA"
Size="200"
Thickness="25"
ShowText="False"
ProgressEdgeShape="Round"
HorizontalOptions="Center"
VerticalOptions="Center" />
<!-- Inner Circle - Category 2 -->
<controls:CircularProgressBar
Progress="5300"
MaxProgress="15000"
ProgressColor="#FB923C"
ProgressLeftColor="#FCC99F"
Size="150"
Thickness="20"
ShowText="False"
ProgressEdgeShape="Round"
HorizontalOptions="Center"
VerticalOptions="Center" />
<!-- Center Label -->
<VerticalStackLayout VerticalOptions="Center" HorizontalOptions="Center">
<Label Text="Total" FontSize="12" HorizontalTextAlignment="Center" />
<Label Text="15000" FontSize="18" FontAttributes="Bold" HorizontalTextAlignment="Center" />
</VerticalStackLayout>
</Grid>
using System.ComponentModel;
using System.Runtime.CompilerServices;
public class DashboardViewModel : INotifyPropertyChanged
{
private int _currentProgress = 65;
private int _maxProgress = 100;
public int CurrentProgress
{
get => _currentProgress;
set
{
_currentProgress = value;
OnPropertyChanged();
}
}
public int MaxProgress
{
get => _maxProgress;
set
{
_maxProgress = value;
OnPropertyChanged();
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
<controls:CircularProgressBar
Progress="{Binding CurrentProgress}"
MaxProgress="{Binding MaxProgress}"
ProgressColor="#10B981"
ProgressLeftColor="#D1FAE5"
Size="150"
Thickness="12" />
<controls:CircularProgressBar
Progress="85"
ProgressColor="#10B981"
ProgressLeftColor="#D1FAE5"
TextColor="#065F46" />
<controls:CircularProgressBar
Progress="60"
ProgressColor="#F59E0B"
ProgressLeftColor="#FEF3C7"
TextColor="#92400E" />
<controls:CircularProgressBar
Progress="30"
ProgressColor="#EF4444"
ProgressLeftColor="#FEE2E2"
TextColor="#991B1B" />
<controls:CircularProgressBar
Progress="50"
ProgressColor="#3B82F6"
ProgressLeftColor="#DBEAFE"
TextColor="#1E40AF" />
| Platform | Minimum Version | Status |
|---|---|---|
| iOS | 15.0 | ✅ Supported |
| Android | 21 (5.0 Lollipop) | ✅ Supported |
| Windows | 10.0.17763.0 | ✅ Supported |
| macOS (Catalyst) | 15.0 | ✅ Supported |
public async Task AnimateProgress()
{
for (int i = 0; i <= 100; i += 5)
{
MyProgressBar.Progress = i;
await Task.Delay(50); // 50ms delay
}
}
public void UpdateProgressColor(int progress)
{
if (progress < 30)
MyProgressBar.ProgressColor = Colors.Red;
else if (progress < 70)
MyProgressBar.ProgressColor = Colors.Orange;
else
MyProgressBar.ProgressColor = Colors.Green;
}
Size property is set (default is 100)ShowText is set to true (default)TextColor contrasts with the backgroundSize is large enough (minimum 80 recommended for text)Colors.Blue or Color.FromArgb("#3B82F6")Contributions are welcome! Please feel free to submit a Pull Request.
git checkout -b feature/AmazingFeature)git commit -m 'Add some AmazingFeature')git push origin feature/AmazingFeature)If you find this library helpful, please consider:
Made with ❤️ for the .NET MAUI community
Happy coding! 🚀