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