Подсчитать количество отображаемых визуальных элементов VisualBrush - PullRequest
0 голосов
/ 21 апреля 2011

Я работаю над программой CAD в WPF и ищу способ подсчета количества элементов управления, отображаемых при рендеринге конкретной кисти.

Так скажи, у меня есть 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.

Моя конечная цель - получить общее количество визуализаций, которые он пытается отобразить, и затем, сколько визуализаций визуализируется по всей заливке.

1 Ответ

0 голосов
/ 22 апреля 2011

Извините, что говорю вам, но я думаю, что вы должны идти по математическому пути.

Хотя я не совсем, уверен, что предположил бы, что wpf рисует это rect один раз, а затем кэширует результат, иначе эта визуальная кисть не будет работать. Так что, по сути, это на самом деле всего лишь текстура, где вы не могли бы знать, сколько плиток было нарисовано полностью или частично.

...