[DEVEXPRESS/WINFORM] MapControl 클래스 : DrawMapItem 이벤트를 사용해 벡터 항목 커스텀 그리기
DevExpress/WinForm 2020. 6. 26. 22:21728x90
반응형
728x170
▶ MapItemFactory.cs
using DevExpress.XtraMap;
namespace TestProject
{
/// <summary>
/// 맵 항목 팩토리
/// </summary>
public class MapItemFactory : DefaultMapItemFactory
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Protected
#region 항목 초기화하기 - InitializeItem(item, source)
/// <summary>
/// 항목 초기화하기
/// </summary>
/// <param name="item">항목</param>
/// <param name="source">소스</param>
protected override void InitializeItem(MapItem item, object source)
{
base.InitializeItem(item, source);
MapRectangle rectangle = item as MapRectangle;
if(rectangle != null)
{
rectangle.Width = 1000;
rectangle.Height = 1000;
}
}
#endregion
}
}
728x90
▶ MainForm.cs
using System.Drawing;
using DevExpress.XtraEditors;
using DevExpress.XtraMap;
namespace TestProject
{
/// <summary>
/// 메인 폼
/// </summary>
public partial class MainForm : XtraForm
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 생성자 - MainForm()
/// <summary>
/// 생성자
/// </summary>
public MainForm()
{
InitializeComponent();
this.mapControl.SetMapItemFactory(new MapItemFactory());
this.listSourceDataAdapter.DataSource = TestList.Instance;
this.mapControl.DrawMapItem += mapControl_DrawMapItem;
}
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Private
#region 맵 컨트롤 맵 항목 그리기 - mapControl_DrawMapItem(sender, e)
/// <summary>
/// 맵 컨트롤 맵 항목 그리기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
private void mapControl_DrawMapItem(object sender, DrawMapItemEventArgs e)
{
Color color1 = (Color)e.Item.Attributes["Tag"].Value;
Color color2 = Color.FromArgb(255 - color1.R, 255 - color1.G, 255 - color1.B);
e.Fill = e.IsHighlighted ? color2 : color1;
e.Stroke = e.IsHighlighted ? color1 : color2;
e.StrokeWidth = e.IsHighlighted ? 5 : 2;
}
#endregion
}
}
728x90
반응형
그리드형(광고전용)
댓글을 달아 주세요