[DEVEXPRESS/WINFORM] PieChartDataAdapter 클래스 : 지리 지도에 분석 데이터 추가하기
DevExpress/WinForm 2020. 6. 16. 22:45728x90
반응형
728x170
▶ MainForm.cs
using System.Data;
using System.Drawing;
using System.Windows.Forms;
using DevExpress.Utils;
using DevExpress.XtraEditors;
using DevExpress.XtraMap;
namespace TestProject
{
/// <summary>
/// 메인 폼
/// </summary>
public partial class MainForm : XtraForm
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Field
////////////////////////////////////////////////////////////////////////////////////////// Private
#region Field
/// <summary>
/// 빙 맵 키
/// </summary>
private string bingKey = "INPUT YOUR BING KEY";
/// <summary>
/// 맵 컨트롤
/// </summary>
private MapControl mapControl;
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 생성자 - MainForm()
/// <summary>
/// 생성자
/// </summary>
public MainForm()
{
InitializeComponent();
#region 툴팁 컨트롤러를 설정한다.
ToolTipController toolTipController = new ToolTipController();
toolTipController.AllowHtmlText = true;
#endregion
#region 맵 컨트롤을 설정한다.
this.mapControl = new MapControl();
this.mapControl.Name = "mapControl";
this.mapControl.Parent = this;
this.mapControl.Dock = DockStyle.Fill;
this.mapControl.ToolTipController = toolTipController;
#endregion
#region 빙맵 데이터 공급자를 설정한다.
BingMapDataProvider bingMapDataProvider = new BingMapDataProvider();
bingMapDataProvider.BingKey = this.bingKey;
#endregion
#region 이미지 레이어를 설정한다.
ImageLayer imageLayer = new ImageLayer();
imageLayer.DataProvider = bingMapDataProvider;
this.mapControl.Layers.Add(imageLayer);
#endregion
#region 인자 항목 키 공급자를 설정한다.
ArgumentItemKeyProvider argumentItemKeyProvider = new ArgumentItemKeyProvider();
#endregion
#region 키 색상 색상화기를 설정한다.
KeyColorColorizer keyColorColorizer = new KeyColorColorizer();
keyColorColorizer.ItemKeyProvider = argumentItemKeyProvider;
keyColorColorizer.Colors.Add(Color.FromArgb(255, 207, 98 ));
keyColorColorizer.Colors.Add(Color.FromArgb(169, 181, 188));
keyColorColorizer.Colors.Add(Color.FromArgb(233, 152, 118));
#endregion
#region 색상화기 키 항목 1을 설정한다.
ColorizerKeyItem colorizerKeyItem1 = new ColorizerKeyItem();
colorizerKeyItem1.Key = 1;
colorizerKeyItem1.Name = "Gold";
keyColorColorizer.Keys.Add(colorizerKeyItem1);
#endregion
#region 색상화기 키 항목 2를 설정한다.
ColorizerKeyItem colorizerKeyItem2 = new ColorizerKeyItem();
colorizerKeyItem2.Key = 2;
colorizerKeyItem2.Name = "Silver";
keyColorColorizer.Keys.Add(colorizerKeyItem2);
#endregion
#region 색상화기 키 항목 3을 설정한다.
ColorizerKeyItem colorizerKeyItem3 = new ColorizerKeyItem();
colorizerKeyItem3.Key = 3;
colorizerKeyItem3.Name = "Bronze";
keyColorColorizer.Keys.Add(colorizerKeyItem3);
#endregion
#region 선형 범위 분포를 설정한다.
LinearRangeDistribution linearRangeDistribution = new LinearRangeDistribution();
#endregion
#region 측정 규칙을 설정한다.
MeasureRules measureRules = new MeasureRules();
measureRules.RangeDistribution = linearRangeDistribution;
measureRules.RangeStops.Add(1d );
measureRules.RangeStops.Add(10d);
measureRules.RangeStops.Add(20d);
measureRules.RangeStops.Add(30d);
measureRules.RangeStops.Add(40d);
#endregion
#region 데이터 셋을 설정한다.
DataSet dataSet = new DataSet("XML DataSet");
dataSet.ReadXml(@"DATA\rio2016.xml");
#endregion
#region 파이 차트 데이터 어댑터를 설정한다.
PieChartDataAdapter pieChartDataAdapter = new PieChartDataAdapter();
pieChartDataAdapter.ItemMaxSize = 60;
pieChartDataAdapter.ItemMinSize = 20;
pieChartDataAdapter.PieItemDataMember = "Name";
pieChartDataAdapter.Mappings.Latitude = "CapitalLat";
pieChartDataAdapter.Mappings.Longitude = "CapitalLon";
pieChartDataAdapter.Mappings.PieSegment = "MedalClass";
pieChartDataAdapter.Mappings.Value = "Quantity";
pieChartDataAdapter.MeasureRules = measureRules;
pieChartDataAdapter.DataSource = dataSet.Tables["Table1"];
#endregion
#region 벡터 항목 레이어를 설정한다.
VectorItemsLayer vectorItemsLayer = new VectorItemsLayer();
vectorItemsLayer.Colorizer = keyColorColorizer;
vectorItemsLayer.Data = pieChartDataAdapter;
vectorItemsLayer.ToolTipPattern = "<b>%A%</b>\r\nGold: %V0%\r\nSilver: %V1%\r\nBronze: %V2%\r\nTotal: %V%";
this.mapControl.Layers.Add(vectorItemsLayer);
#endregion
#region 색상 리스트 레전드를 설정한다.
ColorListLegend colorListLegend = new ColorListLegend();
colorListLegend.Header = "Medal Class";
colorListLegend.Layer = vectorItemsLayer;
this.mapControl.Legends.Add(colorListLegend);
#endregion
#region 크기 레전드를 설정한다.
SizeLegend sizeLegend = new SizeLegend();
sizeLegend.Alignment = LegendAlignment.TopRight;
sizeLegend.Header = "Medal Count";
sizeLegend.Layer = vectorItemsLayer;
this.mapControl.Legends.Add(sizeLegend);
#endregion
vectorItemsLayer.DataLoaded += vectorItemsLayer_DataLoaded;
}
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Private
#region 벡터 항목 레이어 데이터 로드시 처리하기 - vectorItemsLayer_DataLoaded(sender, e)
/// <summary>
/// 벡터 항목 레이어 데이터 로드시 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
private void vectorItemsLayer_DataLoaded(object sender, DataLoadedEventArgs e)
{
this.mapControl.ZoomToFitLayerItems();
}
#endregion
}
}
728x90
반응형
그리드형(광고전용)
댓글을 달아 주세요