FarPoint Spread 에 Annotation 기능이 있다.
[Spread Sample]
Pen 이나 각종 Shape, 이미지 를 올려서 편집이 가능하고 엑셀 파일을 저장/로드했을 때 바로 연동도 가능하다.
굉장히 편하고 유용한 기능이다. 일반적으로 사용했을 경우에는 말이다.
Spread Sheet 에 셀 Merge 좀 해주고 이미지 좀 넣어주고 그러면 그럴수록..
(화면으로 표시되고 그려야할 부분이 넓고 복잡한 하고 다양한 셀 구조를 가지면)
Pen 으로 Drawing 시 속도는 눈에 뛰게 떨어진다.
원인을 이야기 해보자면..
우선 Spread 는 컨트롤을 화면에 그릴 때 극악의 포퍼먼스를 자랑한다.
특히 여러 Cell 을 Merge 했을 때, 더군다나 그 Merge 된 Cell 안에 멀티라인으로 텍스트를 가득 채워넣거나 이미지라도
넣어놓는다면 당장에 화면 갱신, 스크롤할때 바로 느려지는 것을 볼 수 있다.
이런 Merge 된 Cell 이 많아지면 많이질수록 그 효과는 시너지를 일으킨다.
그런데..저 Annotation 기능을 사용해서 화면에 그릴 때 Spread 는 "화면에 보여지는" 모든 셀들을 다시 그린다.
위 이미지 처럼 셀이 텅텅 비어있거든 Merge 된 Cell 이 없는 경우에는 별 문제 없이 사용할 수 있지만
셀들이 복잡하게 구성되는 경우에는 거의 사용이 불가능할 정도로 그려지는 것이 끈기는 것을 볼 수 있을 것이다.
그렇다면 해결책은 무엇인가...
아직까지 저 Spread 의 Annotation 기능의 중간을 가로채서 속도를 해결하는 방법을 찾지를 못했다.
기본적으로 Cell 의 Paint 기능을 개선을 한다고 해도
Cell 의 구성이 복잡해졌을 때는 이전보다는 조금 덜 느려지는 거지 느려지는 것은 마찬가지였다.
(Spread 자체 기능으로 화면에 그릴 때 보다 거의 15~20배 정도 단축시켰으나
Annotation 에서 Pen 으로 그릴 때 원할하게 사용할 정도로 되지는 않음.)
그래서 약간 꼼수로...
Pen 으로 그릴 때 그 좌표를 다 따서 보관하고 화면에는 직접 Graphics 의 DrawLine 으로 그려서보여주고..
다 그렸을 때 그 좌표를 토대로 Spread 의 Shape 개체를 만들어서 넣어주면 그래도 어느정도는 쓸만하게 사용할 수 있다.
spread.SuspendLayout(); { System.Drawing.Drawing2D.GraphicsPath path = new System.Drawing.Drawing2D.GraphicsPath(); path.AddLines(mlstPoint.ToArray()/*좌표 리스트*/); FarPoint.Win.Spread.DrawingSpace.PSShape pso = new FarPoint.Win.Spread.DrawingSpace.CustomShape(); pso.CanMove = FarPoint.Win.Spread.DrawingSpace.Moving.HorizontalAndVertical; pso.CanRotate = true; pso.ForeColor = Color.Empty; pso.BackColor = Color.Empty; pso.ShapeOutlineColor = Color.Black; pso.ShapeOutlineStyle = System.Drawing.Drawing2D.DashStyle.Solid; pso.ShapeOutlineThickness = 1; pso.Shape = path; pso.Left = ?; pso.Top = ?; pso.Width = ?; pso.Height = ?; spread.ActiveSheet.DrawingContainer.AddShape(pso); } spread.ResumeLayout();
'Dev::DotNet > WinForm' 카테고리의 다른 글
Spread 에서 이미지 Attach 시 Memory Leak (0) | 2013.11.27 |
---|---|
TabControl - Button / Tab Move (0) | 2013.11.07 |
FarPoint Spread 출력화면 이미지 추출 (0) | 2013.10.23 |
ProeprtyGrid 에서 사용자 Editor 생성 (0) | 2013.02.12 |
Property 속성 변경 (0) | 2013.02.05 |