Ну, ваш звонок на scale()
, вероятно, не соответствует вашим ожиданиям.Я не уверен, что вы случайно разместили вызовы в неправильном порядке или не совсем понимаете, как работают преобразования в Каире.В случае, если это последнее:
Преобразования влияют только на следующие операции.И они влияют только на операции, связанные с координатами или размерами.В этом случае вы, вероятно, хотели применить его к дуге.Тем не менее, на самом деле это только применяется к обводке, и, скорее всего, таким образом, как вы и не предполагали.
Знаете, как я упоминал, преобразования влияют на операции, связанные с координатами или размерами?Ну, это может быть неочевидно, но обводка подразумевает неявные размеры, а именно размер обводки.Таким образом, размер хода вашей дуги масштабируется на width * 0.5
по осям x и height * 0.5
по осям y.Другими словами, обводка настолько огромна, что выглядит как заливка.
Интересно, что даже если на вашу дугу не влиял scale()
, что означает, что вы остались бы с кругом вместоовал, вы все еще завелись овалом из-за способа масштабирования штриха.
Итак, чтобы решить вашу проблему:
- вызов
scale()
до arc()
- сбросить коэффициент масштабирования после вызова
arc()
, но перед вызовом stroke()
, чтобы вы не получили снова чудовищный удар