我正在研究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
的填充?或者我是否可以使用Fill
或Background
从父级单独引用每个视觉效果进行代码更改?
我目前正在开发一种工具来绘制具有LineSegment
,ArcSegment
或QuadraticBezierSegment
的任意数量的边的数字,并且画笔是用户定义的网格输入高度,宽度和网格大小。网格也能够由用户重新对齐。这使得简单的数学解决方案非常难以实现,因此WPF解决方案将更为可取。
我的最终目标是获得尝试渲染的视觉效果总数,然后在整个填充过程中渲染每个视觉效果的数量。
答案 0 :(得分:0)
很抱歉告诉你,但我认为你必须走数学路线。
虽然我并不完全,但我确定我假设wpf正在绘制rect
一次,然后缓存结果,否则视觉刷将无法实现。所以基本上它实际上只是一个纹理,没有什么你可以知道完全或部分绘制了多少个瓷砖。