{
  "$schema": "https://ai.syncfusion.com/schema/registry-item.json",
  "name": "chart-chart-appearance",
  "framework": "winforms",
  "type": "registry:component",
  "component": "Chart",
  "variant": "chart-appearance",
  "dependencies": [
    "Syncfusion.Chart.Windows"
  ],
  "description": "Column chart of Olympic medal counts across five countries with per-series image point symbols, gradient chart fills, and a top-docked legend.",
  "meta": {
    "essentialStudioRelease": "2026 Volume 2 (v34.1.29)",
    "license": "commercial-or-community",
    "licenseNote": "The Syncfusion package is licensed. The composition in this file is source you own and edit. See https://ai.syncfusion.com/licensing.md",
    "requiresLicenseKey": true,
    "requiresServerEndpoint": false,
    "platformIndex": "https://ai.syncfusion.com/winforms/llms.txt",
    "skillPack": "syncfusion/winforms-ui-components-skills",
    "docs": "https://ai.syncfusion.com/gallery/winforms/chart-chart-appearance.md"
  },
  "files": [
    {
      "target": "src/components/chart-chart-appearance/Form1.cs",
      "content": "#region Copyright Syncfusion Inc. 2001 - 2026\n// Copyright Syncfusion Inc. 2001 - 2026. All rights reserved.\n// Use of this code is subject to the terms of our license.\n// A copy of the current license can be obtained at any time by e-mailing\n// licensing@syncfusion.com. Any infringement will be prosecuted under\n// applicable laws. \n#endregion\nusing System;\nusing System.Drawing;\nusing System.Drawing.Drawing2D;\nusing System.Collections;\nusing System.ComponentModel;\nusing System.Windows.Forms;\nusing System.Data;\nusing Syncfusion.Windows.Forms;\nusing Syncfusion.Windows.Forms.Chart;\nusing Syncfusion.Drawing;\nusing System.Collections.Generic;\nusing System.IO;\n\nnamespace ChartAppearance\n{\n    public class Form1 : MetroForm\n    {\n        #region Private Members\n\n        private System.ComponentModel.IContainer components;\n        private System.Windows.Forms.ImageList imageList1;\n        private ChartControl chartControl1;\n\n        #endregion\n\n        #region Constructor, Main And Dispose\n        public Form1()\n        {\n            BorderColor = Color.FromArgb(0xFF,0xCD,0xCD,0xCD);\n            BorderThickness = 3;\n            CaptionBarHeight = (int)DpiAware.LogicalToDeviceUnits(75.0f);\n            CaptionBarColor = Color.FromArgb(0xFF, 0x1B, 0xA1, 0xE2);\n            CaptionFont = new Font(\"Segoe UI\", 22.0f);\n            CaptionForeColor = Color.White;\n            CaptionAlign = HorizontalAlignment.Left;\n            CaptionButtonColor = Color.White;\n            CaptionButtonHoverColor = Color.White;\n            ControlBox = true;\n            ShowIcon = false;\n            InitializeComponent();\n            InitializeChartData();\n        }\n\n        /// <summary>\n        /// The main entry point for the application.\n        /// </summary>\n        [STAThread]\n        static void Main()\n        {\n            Syncfusion.Telemetry.Telemetry.Disable();\n            Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense(DemoCommon.FindLicenseKey());     \n            Application.EnableVisualStyles();\n            Application.Run(new Form1());\n        }\n\n        /// <summary>\n        /// Clean up any resources being used.\n        /// </summary>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing)\n            {\n                if (components != null)\n                {\n                    components.Dispose();\n                }\n            }\n            base.Dispose(disposing);\n        }\n\n        /// <summary>\n        /// Form Load\n        /// </summary>\n        /// <param name=\"sender\"></param>\n        /// <param name=\"e\"></param>\n        private void Form1_Load(object sender, System.EventArgs e)\n        {\n            // Chart initialization complete\n        }\n\n        #endregion\n\n        #region Windows Form Designer generated code\n        /// <summary>\n        /// Required method for Designer support - do not modify\n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            this.components = new System.ComponentModel.Container();\n            this.imageList1 = new System.Windows.Forms.ImageList(this.components);\n            this.chartControl1 = new Syncfusion.Windows.Forms.Chart.ChartControl();\n            ((System.ComponentModel.ISupportInitialize)(this.chartControl1)).BeginInit();\n            this.SuspendLayout();\n            // \n            // imageList1\n            // \n            this.imageList1.TransparentColor = System.Drawing.Color.Transparent;\n            // \n            // chartControl1\n            // \n            this.chartControl1.Dock = System.Windows.Forms.DockStyle.Fill;\n            this.chartControl1.BackInterior = new Syncfusion.Drawing.BrushInfo(Syncfusion.Drawing.GradientStyle.Vertical, System.Drawing.Color.White, System.Drawing.Color.White);\n            this.chartControl1.ChartArea.BackInterior = new Syncfusion.Drawing.BrushInfo(Syncfusion.Drawing.GradientStyle.Vertical, System.Drawing.Color.Transparent, System.Drawing.Color.Transparent);\n            this.chartControl1.ChartInterior = new Syncfusion.Drawing.BrushInfo(Syncfusion.Drawing.GradientStyle.PathEllipse, System.Drawing.Color.White, System.Drawing.Color.FromArgb(((int)(((byte)(191)))), ((int)(((byte)(219)))), ((int)(((byte)(254))))));\n            this.chartControl1.DataSourceName = \"\";\n            this.chartControl1.IsWindowLess = false;\n            this.chartControl1.Location = new System.Drawing.Point(0, 0);\n            this.chartControl1.Name = \"chartControl1\";\n            this.chartControl1.Size = new System.Drawing.Size(700, 580);\n            this.chartControl1.TabIndex = 1;\n            this.chartControl1.Title.Name = \"Def_title\";\n            this.chartControl1.Title.Text = \"\";\n            this.chartControl1.Titles.Add(this.chartControl1.Title);\n            this.chartControl1.ChartFormatAxisLabel += new Syncfusion.Windows.Forms.Chart.ChartFormatAxisLabelEventHandler(this.chartControl1_ChartFormatAxisLabel);\n            // \n            // Form1\n            // \n            this.BackColor = System.Drawing.Color.White;\n            this.ClientSize = new System.Drawing.Size(700, 600);\n            this.Controls.Add(this.chartControl1);\n            this.MetroColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(161)))), ((int)(((byte)(226)))));\n            this.MinimumSize = new System.Drawing.Size(700, 600);\n            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);\n            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n            this.Name = \"Form1\";\n            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;\n            this.Text = \"Chart Appearance\";\n            this.Load += new System.EventHandler(this.Form1_Load);\n            ((System.ComponentModel.ISupportInitialize)(this.chartControl1)).EndInit();\n            this.ResumeLayout(false);\n\n        }\n        #endregion\n\n        #region Helper Methods\n\n        #region InitializeChartData\n\n        /// <summary>\n        /// In this method chart data has been Initialized.\n        /// </summary>\n        protected void InitializeChartData()\n        {\n            // Top 5 olympic medal winners\n            ChartSeries series1 = new ChartSeries(\"Gold\");\n            series1.Text = \"Gold\";\n            series1.Type = ChartSeriesType.Column;\n\n            ChartSeries series2 = new ChartSeries(\"Silver\");\n            series2.Text = \"Silver\";\n            series2.Type = ChartSeriesType.Column;\n\n            ChartSeries series3 = new ChartSeries(\"Bronze\");\n            series3.Text = \"Bronze\";\n            series3.Type = ChartSeriesType.Column;\n\n            // USA\n            series1.Points.Add(1, 35);\n            series2.Points.Add(1, 39);\n            series3.Points.Add(1, 29);\n\n            // China\n            series1.Points.Add(2, 32);\n            series2.Points.Add(2, 17);\n            series3.Points.Add(2, 14);\n\n            // Russia\n            series1.Points.Add(3, 27);\n            series2.Points.Add(3, 27);\n            series3.Points.Add(3, 28);\n\n            // Australia\n            series1.Points.Add(4, 17);\n            series2.Points.Add(4, 16);\n            series3.Points.Add(4, 16);\n\n            // Japan\n            series1.Points.Add(5, 16);\n            series2.Points.Add(5, 9);\n            series3.Points.Add(5, 12);\n\n            series1.Style.Images = new ChartImageCollection(this.imageList1.Images);\n            series2.Style.Images = new ChartImageCollection(this.imageList1.Images);\n            series3.Style.Images = new ChartImageCollection(this.imageList1.Images);\n\n            this.chartControl1.Series.Add(series1);\n            this.chartControl1.Series.Add(series2);\n            this.chartControl1.Series.Add(series3);\n\n            for (int i = 0; i < series1.Points.Count; i++)\n                series1.Styles[i].Text = string.Format(\"{0}\", series1.Points[i].YValues[0]);\n\n            for (int i = 0; i < series2.Points.Count; i++)\n                series2.Styles[i].Text = string.Format(\"{0}\", series2.Points[i].YValues[0]);\n\n            for (int i = 0; i < series3.Points.Count; i++)\n                series3.Styles[i].Text = string.Format(\"{0}\", series3.Points[i].YValues[0]);\n\n            // Configure chart appearance\n            foreach (ChartSeries series in this.chartControl1.Series)\n            {\n                if (series == this.chartControl1.Series[0])\n                {\n                    series.Style.Images = new ChartImageCollection(this.imageList1.Images);\n                    series.Style.Symbol.Shape = ChartSymbolShape.Image;\n                    series.Style.Symbol.Size = new Size(16, 16);\n                    series.Style.ImageIndex = 0;\n                }\n                series.Style.Symbol.Color = Color.Yellow;\n                series.Style.DisplayShadow = false;\n                series.Style.PointWidth = 2;\n                series.Style.Font.Bold = true;\n            }\n\n            this.chartControl1.ColumnDrawMode = ChartColumnDrawMode.PlaneMode;\n            this.chartControl1.LegendPosition = ChartDock.Top;\n            this.chartControl1.PrimaryXAxis.LabelRotate = true;\n            this.chartControl1.Spacing = 20;\n        }\n\n        #endregion\n\n        #endregion\n\n        /// <summary>\n        /// Format axis labels for chart axes.\n        /// </summary>\n        private void chartControl1_ChartFormatAxisLabel(object sender, ChartFormatAxisLabelEventArgs e)\n        {\n            if (e.AxisOrientation == ChartOrientation.Horizontal)\n            {\n                if (e.Value == 1)\n                    e.Label = \"USA\";\n                else if (e.Value == 2)\n                    e.Label = \"China\";\n                else if (e.Value == 3)\n                    e.Label = \"Russia\";\n                else if (e.Value == 4)\n                    e.Label = \"Australia\";\n                else if (e.Value == 5)\n                    e.Label = \"Japan\";\n                else\n                    e.Label = \"\";\n\n                e.Handled = true;\n            }\n        }\n    }\n\n    /// <summary>\n    /// Represents a class that is used to find the licensing file for Syncfusion controls.\n    /// </summary>\n    internal class DemoCommon\n    {\n        /// <summary>\n        /// Get license key from license.licx\n        /// </summary>\n        public static string FindLicenseKey()\n        {\n            string licenseKeyFile = \"Syncfusion.licx\";\n            if (File.Exists(licenseKeyFile))\n                return File.ReadAllText(licenseKeyFile);\n            return \"\";\n        }\n    }    \n}\n"
    }
  ]
}