728x90
반응형
728x170
▶ CustomMapColorizer .cs
using System;
using System.Drawing;
using DevExpress.XtraMap;
namespace TestProject
{
/// <summary>
/// 커스텀 맵 색상화기
/// </summary>
public class CustomMapColorizer : MapColorizer
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Field
////////////////////////////////////////////////////////////////////////////////////////// Private
#region Field
/// <summary>
/// 색상 배열
/// </summary>
private Color[] colorArray =
{
Color.Violet,
Color.Blue,
Color.LightBlue,
Color.Green,
Color.Yellow,
Color.Orange,
Color.Red
};
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 요소 색상 표시하기 - ColorizeElement(colorizerElement)
/// <summary>
/// 요소 색상 표시하기
/// </summary>
/// <param name="colorizerElement">색상화기 요소 인터페이스</param>
public override void ColorizeElement(IColorizerElement colorizerElement)
{
MapPolygon polygon = colorizerElement as MapPolygon;
if(polygon != null)
{
double power = (double)polygon.Attributes["PowerValue"].Value;
int linearizedPower = (int)Math.Truncate(power * colorArray.Length / 1000);
colorizerElement.ColorizerColor = colorArray[linearizedPower];
}
}
#endregion
}
}
728x90
▶ MainForm.cs
using System;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using DevExpress.XtraMap;
namespace TestProject
{
/// <summary>
/// 메인 폼
/// </summary>
public partial class MainForm : XtraForm
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 생성자 - MainForm()
/// <summary>
/// 생성자
/// </summary>
public MainForm()
{
InitializeComponent();
Load += Form_Load;
}
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Private
//////////////////////////////////////////////////////////////////////////////// Event
#region 폼 로드시 처리하기 - Form_Load(sender, e)
/// <summary>
/// 폼 로드시 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
private void Form_Load(object sender, EventArgs e)
{
#region 맵 컨트롤을 설정한다.
MapControl mapControl = new MapControl();
mapControl.Parent = this;
mapControl.Dock = DockStyle.Fill;
#endregion
#region 맵 항목 저장소를 설정한다.
MapItemStorage mapItemStorage = new MapItemStorage();
MapItemCollection mapItemCollection = mapItemStorage.Items;
for(int i = 0; i < 50; i++)
{
MapPolygon polygon = CreatePolygon
(
i * 20,
new GeoPoint[]
{
new GeoPoint(0 , 5 * i ),
new GeoPoint(0 , 5 * (i + 1)),
new GeoPoint(40, 5 * (i + 1)),
new GeoPoint(40, 5 * i ),
new GeoPoint(0 , 5 * i )
}
);
mapItemCollection.Add(polygon);
}
#endregion
#region 벡터 항목 레이어를 설정한다.
VectorItemsLayer vectorItemsLayer = new VectorItemsLayer();
vectorItemsLayer.Data = mapItemStorage;
vectorItemsLayer.Colorizer = new CustomMapColorizer();
vectorItemsLayer.ToolTipPattern = "{PowerValue}";
mapControl.Layers.Add(vectorItemsLayer);
#endregion
}
#endregion
//////////////////////////////////////////////////////////////////////////////// Function
#region 다각형 생성하기 - CreatePolygon(power, pointArray)
/// <summary>
/// 다각형 생성하기
/// </summary>
/// <param name="power">파워</param>
/// <param name="pointArray">포인트 배열</param>
/// <returns>맵 다각형</returns>
private MapPolygon CreatePolygon(double power, GeoPoint[] pointArray)
{
MapPolygon polygon = new MapPolygon();
foreach(GeoPoint point in pointArray)
{
polygon.Points.Add(point);
}
polygon.Attributes.Add
(
new MapItemAttribute()
{
Name = "PowerValue",
Type = typeof(double),
Value = power
}
);
return polygon;
}
#endregion
}
}
728x90
반응형
그리드형(광고전용)
댓글을 달아 주세요