android canvas.rotate () , координатная точка неупорядочена - PullRequest
0 голосов
/ 19 марта 2020

Я проверил официальные документы и домашние 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). (Даже если я прошел тест кода, они были другими)


Так что это мой вопрос, так что, надеюсь, я прояснил это ...

Спасибо! Спасибо! Спасибо!

非常 感谢 !!

...