Нарисуйте линию между 2 точками расстояния на Android

StackOverflow https://stackoverflow.com/questions/9328739

Вопрос

Допустим, у нас есть холст 400x800, и я хочу провести линию, соединяющую точки P1 (10,10) и P2 (500000 800000). Как видите, вторая точка находится далеко за пределами границ холста. Если я использую Canvas.darwline (P1.x, P1.Y, P2.x, P2.y, Paint), приложение замораживает, и приложение становится непригодным для использования. Использование отсечения не решает проблему, двигатель рисования все еще пытается нарисовать пиксели на весь путь ко второй точке

Есть предложения или обходной путь?

Это было полезно?

Решение

Если P2 находится за пределами видимой области (480x800 в данном конкретном случае), затем вычислите пересечение этой линии с границей, затем используйте точку пересечения вместо P2.

Другие советы

Вы можете уменьшить свою линию, с чем -то вроде этого:

int maxX = 400;
int maxY = 800;

//Calculate how much we have to scale down to fit in the bounds:
float scaleX = (maxX - p1.x)/p2.x;
float scaleY = (maxY - p1.y)/p2.y;

//Get the smallest scale, so that we fit in both axises.
float scale = Math.min(scaleX, scaleY);

//Only scale if we are scaling down. There is no need to make lines smaller than the screen scale up to the screen bounds:
if(scale < 1.0f){
    p2.x *= scale;
    p2.y *= scale;
}

Я не пробовал это, поэтому я не могу гарантировать, что это сработает.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top