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か? または、 or を使用して親から各ビジュアルを個別に参照するために行うことができるコード変更はありますFillBackground?

私は現在、、、、または任意の数の側面を持つ図形を描画するツールに取り組んでおりLineSegment、ブラシは、ユーザーが高さ、幅、およびグリッド サイズを入力して定義するグリッドです。グリッドは、ユーザーが再調整することもできます。これにより、単純な数学的ソリューションを実行するのが非常に難しくなるため、WPF ソリューションが望ましいでしょう。ArcSegmentQuadraticBezierSegment

私の最終的な目標は、レンダリングしようとするビジュアルの総数を取得し、塗りつぶし全体でレンダリングされる各ビジュアルの量を取得することです。

4

1 に答える 1

0

申し訳ありませんが、数学的な道を行かなければならないと思います。

私は完全ではありませんが、確かに wpf はそれをrect一度描画してから結果をキャッシュしていると思います。したがって、本質的には単なるテクスチャであり、全体または部分的に描画されたタイルの数を認識することはできません。

于 2011-04-22T10:54:26.123 に答える