2011-04-14 4 views
1

나는 StartPoint, EndPoint, Center 등이 초당 30 번 설정되는 1000s 도형을 가지고 있지만이 작업을 수행 할 수있는 유일한 방법은 System.Windows.Point가 구조체이므로 매번 새로운 Point을 만드는 것입니다.WPF에서 새 Point 객체를 만들지 않고 shape.Position을 설정하는 방법은 무엇입니까?

shape.Center.X = x; 

그리고 이것을 해결할 SetCenter 등의 방법조차 없습니다.

이것을하는 방법에 대한 아이디어?

+3

이러한 구조를 만드는 데 병목 현상이 있는지 (또는 조사하고 최적화하려는 병목 현상이 있는지) 응용 프로그램을 프로파일 링 해 보셨습니까? 나는 당신이 무의식적으로 용의자가 아니라고 생각하고 Point 구조를 만드는 것이 비용이 많이 드는 작업이라고 가정하고 있습니다. 첫 번째 프로필! –

답변

3

왜 새로운 포인트를 만들지 않으시겠습니까?

이들은 단순한 값 유형으로, 볼 수있는 메모리 나 성능 문제가 없습니다.

+0

+1 .... 90,000 1GHz 이상에서 실행되는 컴퓨터에서 초당 포인트 구조체. 바하마! 객체를 렌더링하는 코드는 쉽게 점의 설정을 습득하게됩니다. –

+0

+1, 성능에 전혀 영향을주지 않는다고 생각합니다. 프로파일 링을 시도하십시오. –

+0

사실 그렇지만 초당 반복 수와 모양 수를 늘릴 수 있기 때문에 가능한 한 빨리 이걸 만들고 싶습니다. –

2

TranslateTransform을 사용하여 모양을 배치하십시오. RenderTransformOrigin을 사용하여 'center'를 설정하십시오.

편집

RenderTransforms는 GPU에 의해 가속화 될 수 . 각 프레임마다 변환을 추가하지 않고 하나만 추가하고 시간이 지남에 따라 속성을 변경합니다. BitmapCachethis is also quite interesting

+0

고맙지 만 메소드 호출은 무엇입니까? 그것도 오브제 인 것 같습니까? 각 모양에 대해이 작업을 별도로 수행해야합니다. –

+0

아마도 Transforms를 추가하는 것이 더 빠를 가능성은 없지만 좋은 아이디어 일 것입니다. –

+0

자세한 내용은 내 대답에 추가했습니다. –

관련 문제