Как делает GraphicsPath. AddArc используют startAngle и sweepAngle параметры?

Если Вы говорите о выполнении чего-то сторона клиента, я не уверен, что это возможно из-за соображений безопасности.

, Возможно, Ваш лучший выбор был бы апплетом Java - но снова это должно быть проверено по политике локальной защиты.

, Если я пытаюсь думать о некотором взломе в JS, чтобы сделать это, возможно, можно попытаться отправить асинхронный запрос с функцией обратного вызова, которая измеряет миллисекунды, которые это взяло - но это просто первое, что пришло на ум.

5
задан Community 8 February 2017 в 14:14
поделиться

1 ответ

GraphicsPath.AddArc делает именно то, что вы его просите, - это дуга, идущая вверх от центра эллипса под точным углом 135 градусов по часовой стрелке от оси x.

К сожалению, это не помогает, когда вы используете угол как прямую пропорцию среза круговой диаграммы, который вы хотите нарисовать. Чтобы узнать угол B, который вам нужно использовать с AddArc, учитывая угол A, который работает на окружности, в радианах используйте:

B = Math.Atan2(sin(A) * height / width, cos(A))

Где width и height - это те из эллипс.

В вашем примере кода попробуйте добавить следующее в конец Form1_Paint:

ellipticalPath = new System.Drawing.Drawing2D.GraphicsPath();
ellipticalPath.AddArc(
    ellipseBounds,
    0.0F,
    (float) (180.0 / Math.PI * Math.Atan2(
        Math.Sin(135.0 * Math.PI / 180.0) * ellipseBounds.Height / ellipseBounds.Width,
        Math.Cos(135.0 * Math.PI / 180.0))));
e.Graphics.DrawPath(Pens.Black, ellipticalPath);

Результат должен выглядеть следующим образом: альтернативный текст http://img216.imageshack.us/img216/1905/arcs.png[126 visible

3
ответ дан 14 December 2019 в 08:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: