Я проверил официальные документы и домашние c сайты, но ничего не вышло. Так что я пришел сюда за помощью!
Мой вопрос должен был быть простым, но я просто не продумал его Итак, я хочу понять обоснование больше, чем реализацию.
canvas.save();
canvas.rotate(90, getWidth() >> 1, getHeight() >> 1);
canvas.drawLine(50, 50, 150, 50, mPaint);
canvas.restore();
Я повернул 300 * 300 зрения на 90 градусов и нарисовал линию 150px, это выглядит так:
введите описание изображения здесь
Это все верно, правда? Но если я изменю вид на 400 * 300 :
введите описание изображения здесь введите описание изображения здесь
Первая диаграмма - это фактический результат. Неправильное положение и длина линии .
Почему это так? Могут ли результаты, которые я ожидаю, быть реализованы после исправления?
Меня также смутило:
public final void rotate(float degrees, float px, float py) {
if (degrees == 0.0f) return;
translate(px, py);
rotate(degrees);
translate(-px, -py);
}
Canvas rotate(degress,px,py)
Больше, чем просто translate(px,py)
, разница между ним и rotate(degress)
. (Даже если я прошел тест кода, они были другими)
Так что это мой вопрос, так что, надеюсь, я прояснил это ...
Спасибо! Спасибо! Спасибо!
非常 感谢 !!