1

要件: 電圧計のユーザー コントロールが必要です。

次のコードは、電圧計の目盛りと値で構成されるアークを描画します。

    <Path Name="Pth" Stroke="DarkGray"  StrokeThickness="2" Width="Auto"  Height="48" Canvas.Top="12">
        <Path.Data>
            <PathGeometry >
                <PathFigure   StartPoint="35,28">
                    <ArcSegment   IsLargeArc="False"
                            Size="23,75"
                            Point="200,28"
                            SweepDirection="Clockwise"
                                RotationAngle="90"/>
                </PathFigure>
            </PathGeometry>
        </Path.Data>

上記のように、使用されるペンはストローク=ダークグレーです。私は Fill プロパティについて話しているのではありません。

ただし、アークのセクションは、ユーザーが指定した範囲に応じて (アラーム値として)青でレンダリングする必要があります。アークの任意のセクション。

全体像は、アークの支配的な部分が灰色のペンでレンダリングされ、アラーム部分が青色になっています。

上記の問題は、ペンをパス (アークセグメント、ジオメトリ、パスフィギュアではなく) にのみ割り当てることができ、パスは一度に 1 つのペンしか使用できません。

ここでは、色が混ざり合うため、グラデーション ブラシは機能しません。ここでは、弧の 2 つのセクションを色で明確に区別する必要があります。

アークを 2arcsegments に分割する 2 つのパスを使用する場合、パス ジオメトリの分数値に応じて、さまざまな既存の計算を行う必要があります。

私の場合の最善のアプローチは何ですか?何か提案はありますか?

4

1 に答える 1

1

ここから撮影:

アイデアの 1 つは、カラー ブロック間に間隔のないグラデーション ブラシを使用することです。

例えば:

<Rectangle Width="200" Height="50">
    <Rectangle.Fill>
        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
            <GradientStop Color="Red" Offset="0.500"/>
            <GradientStop Color="Lime" Offset="0.500"/>
        </LinearGradientBrush>
    </Rectangle.Fill>
</Rectangle>

次のような結果になります。

残念ながら、動的に計算する必要がある場合に備えて、正しいオフセットを見つけるのに苦労するかもしれません。

編集: アークがおおよそどのように見えるかを教えていただけますか?

于 2012-12-19T17:54:53.927 に答える