2016-09-01 3 views
-1

내가 정의 UserControl에 라인과 객체를 많이 그릴 필요가 대학 프로젝트 (시뮬레이션)에서 일하고 있어요 다시 그리기. 현재 접근 방식은 Invalidate()을 사용하여 모든 틱/업데이트 루프에 대해 모든 것을 다시 그려 보는 것입니다. 그러나 수천 개의 선과 직사각형을 그릴 필요가있을 때 특히 그리기에는 많은 시간이 필요합니다 (매우 낮은 FPS가 발생합니다).C#을 단지 전경

은 어떻게 난 단지마다 업데이트 루프로 이동하고 필요한 경우에만 나머지 (드물게 업데이트되지 객체를) 다시 그리기 개체 (그룹) 특정을 다시 그릴 수 있습니다? 아니면이 문제에서 내가 그리는 방식을 최적화하는 다른 방법이 있습니까?

+0

OpenGL을 및 DirectX 구글하시기 바랍니다. :) – neohope

+0

대상 : Winforms, WPF, ASP ..? __Always__ 질문에 올바르게 태그를 답니다. - WinForms [여기를 참조하십시오] (http://stackoverflow.com/questions/27623365/existing-graphics-into-bitmap/27647011#27647011) – TaW

+0

@TaW 나는 winforms를 대상으로 해요. 태그가 수정되었습니다. 링크 주셔서 감사합니다, 나는 그것을 시도합니다 – Myung

답변

0

내 생각은 다음과 같습니다

한 번 비트 맵 (또는 다른 이미지 형식)에 컨트롤을 그리기를하고, 그 이미지를 저장합니다. 그런 다음 해당 비트 맵을 컨트롤에 표시하십시오. (이를 수행 할 수있는 컨트롤 (예 : ImageBox)을 사용한다고 가정하면 무엇이 가장 좋을지 확실하지 않습니다.

그래픽을 업데이트 할 때마다 컨트롤의 어떤 섹션이 오래된 것일 수 있는지 추적하고 해당 섹션을 다시 그립니다 (해당 섹션을 만지는 개체 만 그리기). 저장된 이미지에서 다른 섹션을 복사하십시오.

새 이미지를 표시하고 저장합니다.