计算显示的VisualBrush视觉效果的数量

时间:2011-04-21 16:25:53

标签: c# wpf count visualbrush brushes

我正在研究WPF中的CAD程序,我正在寻找一种方法来计算在渲染特定画笔时显示的控件数量。

所以说我有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的填充?或者我是否可以使用FillBackground从父级单独引用每个视觉效果进行代码更改?

我目前正在开发一种工具来绘制具有LineSegmentArcSegmentQuadraticBezierSegment的任意数量的边的数字,并且画笔是用户定义的网格输入高度,宽度和网格大小。网格也能够由用户重新对齐。这使得简单的数学解决方案非常难以实现,因此WPF解决方案将更为可取。

我的最终目标是获得尝试渲染的视觉效果总数,然后在整个填充过程中渲染每个视觉效果的数量。

1 个答案:

答案 0 :(得分:0)

很抱歉告诉你,但我认为你必须走数学路线。

虽然我并不完全,但我确定我假设wpf正在绘制rect一次,然后缓存结果,否则视觉刷将无法实现。所以基本上它实际上只是一个纹理,没有什么你可以知道完全或部分绘制了多少个瓷砖。