0

我正在开发 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?或者我可以进行代码更改以使用Fillor单独从父级引用每个视觉对象Background

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

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

4

1 回答 1

0

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

虽然我不完全是,但我肯定会假设 wpf 正在绘制rect一次然后缓存结果,否则该 visualbrush 将无法执行。所以本质上它实际上只是一个纹理,没有任何东西可以让你知道完全或部分绘制了多少瓷砖。

于 2011-04-22T10:54:26.123 回答