Как я могу нарисовать сектор круга с классом эллипса?

Я хотел бы сделать сектор круга на WP7. Я попытался сделать это с классом эллипса, и я нашел много решений, которые делают диаграмму или круговую диаграмму или что-то еще, но мне нужна только суть. Может ли кто-нибудь помочь?

цель состоит в том, чтобы показать только одну часть круга (или эллипса). Как желтая область на картинке:

enter image description here

Спасибо, Лачи

Ответы

Ответ 1

Здесь довольно простое решение проблемы, хотя оно не использует Ellipse и требует небольшой тригонометрии:

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

Свойство Data использует Синтаксис трассировки пути.

  • "M" в начале сообщает пером M ove в положение 0,0.
  • "L" указывает пером нарисовать a L ine из текущего местоположения (0, 0) до 0, -100.
  • "A" указывает пером нарисовать эллиптический A rc от текущего местоположения до 70.7, -70.7 (часть "100 100" определяет горизонтальный и вертикальный радиус эллипса, а "0 0 1" для RotationAngle, IsLargeArc и SweepDirection (1 по часовой стрелке, 0 для против часовой стрелки)).
  • "z" указывает пером закрыть или завершить фигуру (что приведет к тому, что линия будет отображена с 70.7, -70.7 до 0,0).

Откуда взялось 70.7? Ну, эта особая дуга выметает угол 45 градусов по кругу с радиусом 100, поэтому координаты 70,7, -70,7 определяются 100 * sin(45) и 100 * cos(45).

Ответ 2

вам нужно сделать что-то вроде этого:

  • определить оболочку холста для эллипса
  • определить видимую часть холста (клип). Для этой части вам нужно использовать PathGeometry в качестве клипа, чтобы определить срез круга, который вы хотите видеть. (см. ссылку)

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

В качестве альтернативы вы можете использовать CombinedGeometry для объединения геометрии PathGeometry и EllipseGeometry для формирования среза. (ссылка является хорошим примером комбинированной геометрии)