2012-11-13 2 views
0

FrameworkElement이라는 _frameworkElement에 대한 참조가 있습니다. OnRender 이벤트에서 drawingContext에 FrameworkElement을 그려야합니다. 이처럼drawingContext에서 FrameworkElement를 그리는 방법은 무엇입니까?

는 : 어떤이 문제에 대한 _frameworkElement

상관 없음 면도 솔루션에 적용되는 변환 렌더링 고려 내가 필요로 무엇입니까

protected override void OnRender(DrawingContext drawingContext) 
{ 
    drawingContext. ?? 
    base.OnRender(drawingContext); 
} 

? 그릴 것이다 선택 도구를 사용하여 여러 모양을 나는 그래픽 응용 프로그램이 때, 사용자가 도형을 그릴 수

, 선택 : 감사

편집

이유는 무엇의 OnRender 오버라이드 (override) 할 필요가 직사각형 선택 영역.

내가하는 일은 스테이지 캔버스에서 선택한 모양을 선택 영역으로 다시 복사하는 것입니다. 선택 영역으로 변환 한 후 사용자가 이동하고 크기를 조정할 수있는 캔버스 캔버스 스테이지에서 캔버스를 클릭 한 다음 스테이지에 모양을 다시 표시합니다. 캔버스.

문제는 : 캔버스에 캔버스에서 아이들을 제거 할 때

병목 현상이, Children.Remove & Children.Add은 사용자가 변환하는 형태의 많은 수를 선택 특별히 때, 구현하는 시간을 요할 것이다.

그래서?

나는의 OnRender

+1

왜 그렇게할까요? WPF에서 OnRender()를 재정의해야하는 상황을 생각할 수 없습니다. 네가하려는 일에 대해 좀 더 자세히 알려줘. –

+0

오버라이드가 필요한 상황이 있습니다. 마우스 위치 및 이벤트에 응답하는 라이브 데이터 표현 (상상해보십시오. 상상해보십시오)을 그리는 데 사용했습니다. 이것은 유효한 시나리오입니다. 그러나 도움을 받으려면 무엇을해야하는지 알고 있으면 도움이됩니다. :) – XamlZealot

+0

OnRender()를 재정의해야하는 이유를 설명하기 위해 위의 EDIT를 참조하십시오. – simo

답변

0

를 재정 의하여 대신 선택 캔버스의 drawingContext에 그들을 잡아,하지 다시 부모 선택한 모양을 생각하지 난 당신이 그렇게 할 수도 정말 이해가 않습니다 믿지 않는다 없음. DrawingContext은 각 UIElement에 고유하며 프레임 워크는 해당 드로잉 메서드가 열거 될 때이를 호출합니다 (예 : 각 요소에는 자체 OnRender 패스가 있음).

전적으로 디자인 + 문제를 따르는 것이 아니라 어쩌면 도움이 될까요?

WPF canvas performance- children.add called many times

당신은 WPF가 렌더링하는 방법에 깊은 다이빙에 필요한 경우

How to draw line of ten thousands of points with WPF within 0.5 second?

, this 좋은 읽기입니다.

+0

링크에 대해 매우 고마워요. – simo

관련 문제