[DEVEXPRESS/WINFORM] ImageLayer 클래스 : RequestDataLoading 이벤트를 사용해 웹 데이터 서비스에서 이미지 타일 로드시 진행 상태 표시하기
DevExpress/WinForm 2020. 6. 21. 14:23728x90
반응형
728x170
▶ MainForm.cs
using System;
using DevExpress.XtraEditors;
using DevExpress.XtraMap;
namespace TestProject
{
/// <summary>
/// 메인 폼
/// </summary>
public partial class MainForm : XtraForm
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Field
////////////////////////////////////////////////////////////////////////////////////////// Private
#region Field
/// <summary>
/// 요청 수
/// </summary>
private int requestCount = 0;
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 생성자 - MainForm()
/// <summary>
/// 생성자
/// </summary>
public MainForm()
{
InitializeComponent();
this.openStreetMapDataProvider.WebRequest += openStreetMapDataProvider_WebRequest;
this.imageLayer.RequestDataLoading += imageLayer_RequestDataLoading;
this.imageLayer.DataLoaded += imageLayer_DataLoaded;
}
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Private
//////////////////////////////////////////////////////////////////////////////// Event
#region OPEN STREET MAP 데이터 공급자 웹 요청시 처리하기 - openStreetMapDataProvider_WebRequest(sender, e)
/// <summary>
/// OPEN STREET MAP 데이터 공급자 웹 요청시 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
private void openStreetMapDataProvider_WebRequest(object sender, MapWebRequestEventArgs e)
{
e.UserAgent = "XtraMap Getting Started - Connect to OpenStreetMap";
}
#endregion
#region 이미지 레이어 데이터 로드 요청시 처리하기 - imageLayer_RequestDataLoading(sender, e)
/// <summary>
/// 이미지 레이어 데이터 로드 요청시 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
private void imageLayer_RequestDataLoading(object sender, EventArgs e)
{
this.requestCount++;
UpdateProgressBar();
}
#endregion
#region 이미지 레이어 데이터 로드시 처리하기 - imageLayer_DataLoaded(sender, e)
/// <summary>
/// 이미지 레이어 데이터 로드시 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
private void imageLayer_DataLoaded(object sender, DataLoadedEventArgs e)
{
this.progressBar.Value = 100;
this.progressBar.Visible = false;
this.progressLabel.Visible = false;
this.requestCount = 0;
}
#endregion
//////////////////////////////////////////////////////////////////////////////// Function
#region 진행바 업데이트하기 - UpdateProgressBar()
/// <summary>
/// 진행바 업데이트하기
/// </summary>
private void UpdateProgressBar()
{
if(!this.progressBar.Visible)
{
this.progressBar.Visible = true;
}
if(!this.progressLabel.Visible)
{
this.progressLabel.Visible = true;
}
this.progressBar.Value = (int)(100 * (this.requestCount - 1) / this.requestCount);
}
#endregion
}
}
728x90
반응형
그리드형(광고전용)
댓글을 달아 주세요