2011-04-21 7 views
0

저는 WPF의 CAD 프로그램을 작성 중이며 특정 브러시가 렌더링 될 때 표시되는 컨트롤 수를 세는 방법을 찾고 있습니다.표시된 VisualBrush 비주얼의 수를 계산하십시오.

그래서 내가 Ellipse이 있다고 :

<Ellipse x:Name="Ellipse" Canvas.Top="25" Canvas.Left="50" Width="400" Height="250" Stroke="DarkBlue" StrokeThickness="5" />

그리고 난 뒤에 코드에서 VisualBrush으로 채우기 :

 VisualBrush tileCounter = new VisualBrush(); 

     Rectangle rect = new Rectangle() { Width = 10, Height = 10, Fill = Brushes.Blue, Stroke = Brushes.BlueViolet, StrokeThickness = 1 }; 

     tileCounter.Visual = rect; 
     tileCounter.TileMode = TileMode.Tile; 
     tileCounter.Stretch = Stretch.None; 
     tileCounter.Viewport = new Rect(0, 0, 10, 10); 
     tileCounter.ViewportUnits = BrushMappingMode.Absolute; 

     Ellipse.Fill = tileCounter; 

VisualBrush 어떻게 다시보고 얻을 수있는 방법이 있나요 Ellipse의 채우기로 렌더링 한 사각형 모양의 많은 인스턴스? 또는 Fill 또는 Background을 사용하여 부모로부터 개별적으로 각 시각을 참조하도록 코드를 변경할 수 있습니까? 나는 현재 LineSegment, ArcSegment, 또는 QuadraticBezierSegment입니다면의 수와 브러시가 그림을 그릴 수있는 도구 일하고

는 사용자가 입력 한 높이, 폭, 격자 크기로 정의하는 그리드입니다. 그리드는 사용자가 재정렬 할 수도 있습니다. 따라서 간단한 수학 솔루션을 매우 어렵게 만들 수 있으므로 WPF 솔루션이 바람직합니다.

나의 궁극적 인 목표는 렌더링을 시도하는 총 영상 수를 얻은 다음 전체 영상에서 각 영상이 얼마나 렌더링되는지 확인하는 것입니다.

답변

0

당신에게 말할 수는 있지만 미안하지만 수학적 경로를 따라야한다고 생각합니다.

비록 전적으로 wpf가 rect을 그리는 것으로 가정하고 그 결과를 캐싱한다고 가정합니다. 그렇지 않으면 visualbrush가 성능이 좋지 않을 것입니다. 그래서 본질적으로 그것은 실제로 텍스처 일뿐입니다. 얼마나 많은 타일이 전체적으로 또는 부분적으로 그려져 있는지 알 수있는 곳이 없습니다.

관련 문제