web-dev-qa-db-ja.com

楕円クラスで扇形を描くにはどうすればよいですか?

WP7で扇形を作りたいです。楕円クラスでこれを実行しようとすると、ゲージや円グラフなどを作成する多くの解決策が見つかりましたが、必要なのは本質だけです。誰か助けてもらえますか?

目的は、円(または楕円)の一部だけを表示することです。写真の黄色い領域のように:

enter image description here

ありがとう、Laci

16
laszlokiss88

Ellipseを使用せず、少し三角法が必要ですが、これは問題のかなり簡単な解決策です。

_<Path Fill="Black"
      Data="M0,0 L0,-100 A100,100 0 0 1 70.7,-70.7 z" />
_

Dataプロパティは パスマークアップ構文 を使用します。

  • 最初の「M」はペンに次のように伝えます M場所0,0に移動します。
  • 「L」はペンに描画するように指示します L現在の場所(0、0)から0、-100まで。
  • 「A」はペンに楕円を描くように指示します A現在の場所から70.7、-70.7までのrc( "100,100"部分は楕円の水平および垂直半径を決定し、 "0 01"部分はRotationAngleIsLargeArc、およびSweepDirection(時計回りに1、反時計回りに0))。
  • 「z」は、ペンに図形を閉じるか完成させるように指示します(これにより、70.7、-70.7から0,0に線が引かれます)。

70.7はどこから来たのですか?さて、この特定の弧は半径100の円から45度の角度を掃引するので、座標70.7、-70.7は100 * sin(45)100 * cos(45)によって決定されます。

38
devuxer

あなたはこのようなことをする必要があります:

  • 楕円のキャンバスラッパーを定義する
  • キャンバスの表示部分(クリップ)を定義します。この部分では、 PathGeometry をクリップとして使用して、表示する円のスライスを定義する必要があります。 (リンクを参照)

    <Canvas>
        <Canvas.Clip>
            <PathGeometry>
                    // define your path here (see link above)
            </PathGeometry> 
    
            <Ellipse Background="Yellow" Width="200" Height="200" />
        </Canvas.Clip>
    </Canvas>
    

または、 CombinedGeometry を使用してPathGeometryEllipseGeometryを組み合わせてスライスを形成することもできます。 (リンクはCombinedGeometryの良い例を提供します)

1
Mo Valipour