Как мне нарисовать линию с помощью холста, если я коснусь изображения с помощью onTouchevent. Здесь я использую изображение в качестве фона и позиционирую его на основе координат x/Y? Кроме того, можно ли проверить, нарисована ли линия в этих координатах? На самом деле, если я нарисую линию, она будет перекрывать вид изображения. Линия должна рисовать само изображение внутри слоя. Как вычислить положение изображения x, y Спасибо,
Как мне нарисовать линию с помощью холста, если я коснусь изображения с помощью onTouchevent?
Ответы (2)
public boolean onTouchEvent(MotionEvent event) {
int eventaction = event.getAction();
int X = (int)(event.getX());
int Y = (int)(event.getY());
switch (eventaction ) {
case MotionEvent.ACTION_DOWN:
canvas.drawLine(X,Y,someOtherX, someOtherY, paint):
break;
<snip>
}
Если вы хотите проверить, нарисована ли уже линия в координатах X, Y, вам нужно сохранить список или массив линий, которые вы уже нарисовали, с их координатами начала/остановки или наклоном/перехватом и выполнить алгебру. У вас есть текущая строка от X,Y до SomeOtherX,Y. Это был бы простой процесс прохождения каждой строки и определения того, где пересекаются две линии, если они вообще пересекаются, и пересекаются ли они на экране.
это просто сокращение от того, что здесь есть больше кода, но это не важно для того, о чем вы просили.
Как решить пересечение двух линий, скажем, этих двух, в форме пересечения наклона
y = 3x-3
y = 2.3x+4
В точке пересечения они оба будут иметь одинаковое значение координаты y, поэтому приравняем уравнения друг к другу: 3x-3 = 2,3x+4
Это дает нам уравнение с одним неизвестным (x), которое мы можем решить: Перестроить, чтобы получить x членов слева 3x - 2,3x = 4+3 Объединить одинаковые члены 0,7x = 7 Получаем x = 10
Чтобы найти y, просто установите x равным 10 в уравнении любой линии и решите для y: Уравнение для линии y = 3x - 3 (подойдет любая линия) Установите x равным 10 y = 30 - 3
Получая у = 27
Теперь у нас есть и x, и y, поэтому точка пересечения (10, 27)