syncfusion-winforms-bullet-graph
SKILL.md
Implementing Syncfusion Windows Forms Bullet Graph
Expert guidance for implementing the Syncfusion Bullet Graph control in Windows Forms applications. The Bullet Graph is a compact, space-efficient data visualization control designed for dashboards, replacing traditional gauges and meters. It displays a primary measure (featured measure) compared to a target (comparative measure) within qualitative performance ranges.
When to Use This Skill
Use this skill when you need to:
- Display KPIs (Key Performance Indicators) in a compact dashboard layout
- Show current performance against targets (actual vs goal)
- Visualize data with performance ranges (poor, satisfactory, good)
- Create revenue analysis or expense tracking visualizations
- Replace traditional gauges and meters with space-efficient alternatives
- Compare actual values to benchmarks or targets
- Build executive dashboards requiring high information density
- Implement year-to-date (YTD) metrics visualization
Component Overview
The Bullet Graph consists of:
- Featured Measure: Primary data bar showing the current value (e.g., actual revenue)
- Comparative Measure: Target line showing the goal or benchmark (e.g., target revenue)
- Qualitative Ranges: Background bands indicating performance levels (e.g., poor, satisfactory, good)
- Quantitative Scale: Axis with ticks and labels showing numeric values
- Caption: Label describing what the graph represents
Documentation and Navigation Guide
Getting Started
π Read: references/getting-started.md
- Assembly deployment and NuGet package installation
- Creating Bullet Graph programmatically in code
- Using Syncfusion Reference Manager for Visual Studio integration
- Basic initialization and first working example
- Required namespaces and assemblies
Measures (Featured and Comparative)
π Read: references/measures.md
- Featured measure: primary data bar configuration
- Featured measure customization (color, thickness)
- Comparative measure: target line configuration
- Comparative measure customization (symbol color, thickness)
- Visual hierarchy and positioning
Qualitative Ranges
π Read: references/qualitative-ranges.md
- Adding and configuring qualitative ranges collection
- Range properties (RangeEnd, RangeStroke, RangeCaption)
- Customizing range size and opacity
- Binding range colors to ticks and labels
- Performance indicator patterns (good, satisfactory, poor)
Scale Ticks
π Read: references/scale-and-ticks.md
- Major ticks and minor ticks configuration
- Tick customization (stroke, size, thickness)
- Tick positioning (Above, Below, Cross)
- Interval and MinorTicksPerInterval settings
- Visual customization examples
Scale Labels
π Read: references/scale-labels.md
- Label properties and numeric values
- Label customization (font size, color, offset)
- Label formatting patterns (LabelFormat)
- Label positioning (Above, Below)
Layout and Orientation
π Read: references/layout-and-orientation.md
- Orientation (Horizontal, Vertical)
- Flow direction (Forward, Backward)
- Caption and caption positioning (Near, Far)
- Quantitative scale length customization
- Layout properties and docking
Quick Start Example
using System;
using System.Drawing;
using System.Windows.Forms;
using Syncfusion.Windows.Forms.BulletGraph;
namespace BulletGraphDemo
{
public class MainForm : Form
{
public MainForm()
{
// Create Bullet Graph
BulletGraph bullet = new BulletGraph();
bullet.Dock = DockStyle.Fill;
// Set orientation and flow
bullet.FlowDirection = BulletGraphFlowDirection.Forward;
bullet.Orientation = Orientation.Horizontal;
// Configure measures
bullet.FeaturedMeasure = 4.5; // Actual value
bullet.ComparativeMeasure = 7; // Target value
// Configure scale
bullet.Minimum = 0;
bullet.Maximum = 10;
bullet.Interval = 2;
bullet.MinorTicksPerInterval = 3;
// Add qualitative ranges
bullet.QualitativeRanges.Add(new QualitativeRange()
{
RangeEnd = 4,
RangeCaption = "Bad",
RangeStroke = Color.Red
});
bullet.QualitativeRanges.Add(new QualitativeRange()
{
RangeEnd = 7,
RangeCaption = "Satisfactory",
RangeStroke = Color.Yellow
});
bullet.QualitativeRanges.Add(new QualitativeRange()
{
RangeEnd = 10,
RangeCaption = "Good",
RangeStroke = Color.Green
});
// Add caption
bullet.Caption = "Revenue YTD\n$ in thousands";
// Add to form
this.Controls.Add(bullet);
}
}
}
Common Patterns
Revenue Tracking Dashboard
BulletGraph revenueGraph = new BulletGraph();
revenueGraph.Dock = DockStyle.Top;
revenueGraph.Height = 100;
revenueGraph.Caption = "Revenue YTD\n$ in thousands";
revenueGraph.CaptionPosition = BulletGraphCaptionPosition.Near;
// Set actual vs target
revenueGraph.FeaturedMeasure = 275; // Actual: $275k
revenueGraph.ComparativeMeasure = 300; // Target: $300k
// Configure scale
revenueGraph.Minimum = 0;
revenueGraph.Maximum = 400;
revenueGraph.Interval = 100;
revenueGraph.LabelFormat = "$#0K";
// Performance ranges
revenueGraph.QualitativeRanges.Add(new QualitativeRange()
{ RangeEnd = 200, RangeStroke = Color.FromArgb(255, 200, 200) }); // Poor
revenueGraph.QualitativeRanges.Add(new QualitativeRange()
{ RangeEnd = 300, RangeStroke = Color.FromArgb(255, 255, 200) }); // Fair
revenueGraph.QualitativeRanges.Add(new QualitativeRange()
{ RangeEnd = 400, RangeStroke = Color.FromArgb(200, 255, 200) }); // Good
Vertical KPI Display
BulletGraph kpiGraph = new BulletGraph();
kpiGraph.Orientation = Orientation.Vertical;
kpiGraph.FlowDirection = BulletGraphFlowDirection.Backward;
kpiGraph.Dock = DockStyle.Left;
kpiGraph.Width = 150;
kpiGraph.Caption = "Customer\nSatisfaction";
kpiGraph.CaptionPosition = BulletGraphCaptionPosition.Far;
kpiGraph.FeaturedMeasure = 8.5; // Current score
kpiGraph.ComparativeMeasure = 9; // Target score
kpiGraph.Minimum = 0;
kpiGraph.Maximum = 10;
kpiGraph.Interval = 2;
Styled Bullet Graph with Custom Colors
BulletGraph styledGraph = new BulletGraph();
// Customize featured measure bar
styledGraph.FeaturedMeasure = 65;
styledGraph.FeaturedMeasureBarStroke = Color.DarkBlue;
styledGraph.FeaturedMeasureBarStrokeThickness = 8;
// Customize comparative measure
styledGraph.ComparativeMeasure = 80;
styledGraph.ComparativeMeasureSymbolStroke = Color.Red;
styledGraph.ComparativeMeasureSymbolStrokeThickness = 3;
// Customize ticks and labels
styledGraph.MajorTickStroke = Color.Black;
styledGraph.MajorTickSize = 15;
styledGraph.MinorTickStroke = Color.Gray;
styledGraph.MinorTickSize = 10;
styledGraph.LabelFontSize = 12;
styledGraph.LabelStroke = Color.Black;
Multiple Bullet Graphs in Dashboard
// Stack multiple bullet graphs vertically
BulletGraph[] metrics = new BulletGraph[3];
string[] captions = { "Sales\n$ in thousands", "Profit\n$ in thousands", "Customers\ncount" };
double[] actuals = { 275, 45, 1250 };
double[] targets = { 300, 50, 1500 };
for (int i = 0; i < 3; i++)
{
metrics[i] = new BulletGraph();
metrics[i].Dock = DockStyle.Top;
metrics[i].Height = 80;
metrics[i].Caption = captions[i];
metrics[i].FeaturedMeasure = actuals[i];
metrics[i].ComparativeMeasure = targets[i];
// Add standard ranges
metrics[i].QualitativeRanges.Add(new QualitativeRange()
{ RangeEnd = targets[i] * 0.6, RangeStroke = Color.LightCoral });
metrics[i].QualitativeRanges.Add(new QualitativeRange()
{ RangeEnd = targets[i] * 0.9, RangeStroke = Color.LightYellow });
metrics[i].QualitativeRanges.Add(new QualitativeRange()
{ RangeEnd = targets[i] * 1.2, RangeStroke = Color.LightGreen });
this.Controls.Add(metrics[i]);
}
Key Properties Reference
Measures
| Property | Type | Description |
|---|---|---|
FeaturedMeasure |
double | Primary value to display (current/actual) |
FeaturedMeasureBarStroke |
Color | Color of the featured measure bar |
FeaturedMeasureBarStrokeThickness |
int | Thickness of the featured measure bar |
ComparativeMeasure |
double | Target or benchmark value |
ComparativeMeasureSymbolStroke |
Color | Color of the comparative measure line |
ComparativeMeasureSymbolStrokeThickness |
int | Thickness of the comparative measure line |
Scale
| Property | Type | Description |
|---|---|---|
Minimum |
double | Starting value of the scale |
Maximum |
double | Ending value of the scale |
Interval |
double | Spacing between major ticks |
MinorTicksPerInterval |
int | Number of minor ticks between major ticks |
Layout
| Property | Type | Description |
|---|---|---|
Orientation |
Orientation | Horizontal or Vertical display |
FlowDirection |
BulletGraphFlowDirection | Forward or Backward flow |
Caption |
string | Label describing the metric |
CaptionPosition |
BulletGraphCaptionPosition | Near or Far caption placement |
Ranges
| Property | Type | Description |
|---|---|---|
QualitativeRanges |
QualitativeRangeCollection | Collection of qualitative range objects |
QualitativeRangesSize |
int | Width/height of the range bands |
Common Use Cases
- Executive Dashboards: Display multiple KPIs in compact space
- Financial Reports: Revenue, profit, and expense tracking
- Sales Performance: Quota attainment visualization
- Customer Metrics: Satisfaction scores, retention rates
- Operational KPIs: Efficiency, throughput, quality metrics
- Project Management: Budget vs actual, schedule performance
- Manufacturing: Production targets, defect rates, utilization
Weekly Installs
1
Repository
syncfusion/winfβ¦s-skillsFirst Seen
1 day ago
Security Audits
Installed on
mcpjam1
claude-code1
kilo1
replit1
junie1
windsurf1