Как я могу нарисовать сектор круга с классом эллипса?
Я хотел бы сделать сектор круга на 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 для формирования среза. (ссылка является хорошим примером комбинированной геометрии)