안녕하세요 계속 윈폼만 사용하던 유저 입니다.
바둑 판처럼 일정한 간격으로 컨트롤을 많이 배치하고
Zoom In/Out, 미니 맵 기능이 필요 하다 보니 WPF가 구현이 좋을 것으로 보여 작업 진행 했었습니다.
Shape 를 상속 받은 class 를 만들었고
클릭 했을 때 테두리 색상, Index 정보 표시가 필요 하여
다음 과 같이 구현 했습니다.
protected override void OnRender(DrawingContext dc)
{
base.OnRender(dc);
if (_rect.IsEmpty)
{
return;
}
if (Clicked)
{
dc.DrawRectangle(Brushes.Orange, COLOR_CLICKED, _rect);
var innerRect = _rect;
innerRect.Inflate(-2, -2);
dc.DrawRectangle(this.Fill, null, innerRect);
}
if (string.IsNullOrEmpty(Text) == false)
{
Point textPosition = new Point(
_rect.X + (_rect.Width - _formattedText.Width) / 2,
_rect.Y + (_rect.Height - _formattedText.Height) / 2);
dc.DrawText(_formattedText, textPosition);
}
}
동작은 되는데… 전체 셀에 대해 색상 초기화가 엄청 오래 걸립니다.
모든 셀이 색상 변경되는 것 까지 2만개 기준 Text 가 없는 경우는 약 2초 텍스트가 있는 경우는 약 5초 정도 걸리는 것 같습니다.
각 Index의 결과 정보를 한꺼번에 리셋 시키는 경우가 최소 5분에 한번씩을 발생을 하는데…
구현 방식이 잘못된 걸까요? 혹은 다른 방법이 있을까요?
고수 분들의 의견을 듣고 싶습니다.