This repository has been archived by the owner on Oct 24, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Form1.vb
78 lines (63 loc) · 2.9 KB
/
Form1.vb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
Imports DevExpress.XtraMap
Imports System.Data
Imports System.Drawing
Imports System.Windows.Forms
Namespace WinForms_MapControl_PieChartDataAdapter
Partial Public Class Form1
Inherits Form
Private Const xmlFilepath As String = "..\..\sochi2014.xml"
Private ReadOnly Property PieLayer() As VectorItemsLayer
Get
Return CType(mapControl1.Layers("PieLayer"), VectorItemsLayer)
End Get
End Property
Public Sub New()
InitializeComponent()
' #Region "#DataProperty"
' Assign a PieChartDataAdapter object to Data.
PieLayer.Data = CreateData()
' #End Region ' #DataProperty
' #Region "#ColorizerProperty"
' Assign a KeyColorColorizer object to Colorizer.
PieLayer.Colorizer = CreateColorizer()
' #End Region ' #ColorizerProperty
End Sub
#Region "#CreateData"
' Create pie chart data adapter and specify its parameters.
Private Function CreateData() As IMapDataAdapter
Dim adapter As New PieChartDataAdapter() With {.DataSource = LoadDataFromXml(xmlFilepath), .PieItemDataMember = "Name", .ItemMinSize = 20, .ItemMaxSize = 60}
' Specify mappings.
adapter.Mappings.Latitude = "CapitalLat"
adapter.Mappings.Longitude = "CapitalLon"
adapter.Mappings.PieSegment = "MedalClass"
adapter.Mappings.Value = "Quantity"
' Specify measure rules
adapter.MeasureRules = New MeasureRules()
adapter.MeasureRules.RangeStops.Add(1)
adapter.MeasureRules.RangeStops.Add(10)
adapter.MeasureRules.RangeStops.Add(20)
adapter.MeasureRules.RangeStops.Add(30)
adapter.MeasureRules.RangeStops.Add(40)
Return adapter
End Function
Private Function LoadDataFromXml(ByVal path As String) As DataTable
Dim ds As New DataSet()
ds.ReadXml(path)
Dim table As DataTable = ds.Tables(0)
Return table
End Function
#End Region ' #CreateData
#Region "#CreateColorizer"
Private Function CreateColorizer() As MapColorizer
Dim colorizer As New KeyColorColorizer() With {.ItemKeyProvider = New ArgumentItemKeyProvider()}
colorizer.Colors.Add(Color.FromArgb(255, 207, 98))
colorizer.Colors.Add(Color.FromArgb(169, 181, 188))
colorizer.Colors.Add(Color.FromArgb(233, 152, 118))
colorizer.Keys.Add(New ColorizerKeyItem() With {.Key = 1, .Name = "Gold"})
colorizer.Keys.Add(New ColorizerKeyItem() With {.Key = 2, .Name = "Silver"})
colorizer.Keys.Add(New ColorizerKeyItem() With {.Key = 3, .Name = "Bronze"})
Return colorizer
End Function
#End Region ' #CreateColorizer
End Class
End Namespace