Как мне нарисовать линию с помощью холста, если я коснусь изображения с помощью onTouchevent?

Как мне нарисовать линию с помощью холста, если я коснусь изображения с помощью onTouchevent. Здесь я использую изображение в качестве фона и позиционирую его на основе координат x/Y? Кроме того, можно ли проверить, нарисована ли линия в этих координатах? На самом деле, если я нарисую линию, она будет перекрывать вид изображения. Линия должна рисовать само изображение внутри слоя. Как вычислить положение изображения x, y Спасибо,


person Community    schedule 03.03.2012    source источник
comment
подробно объясните? Не могу получить то, что хочешь   -  person King RV    schedule 03.03.2012
comment
нарисуйте линию с помощью onTouchevent на фоне изображения без перекрытия   -  person    schedule 03.03.2012
comment
что значит без перекрытия ??   -  person King RV    schedule 03.03.2012


Ответы (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. Это был бы простой процесс прохождения каждой строки и определения того, где пересекаются две линии, если они вообще пересекаются, и пересекаются ли они на экране.

person Martin    schedule 03.03.2012
comment
можно ли включить canvas.drawLine внутри функции ontouchevent - person ; 03.03.2012

это просто сокращение от того, что здесь есть больше кода, но это не важно для того, о чем вы просили.

Как решить пересечение двух линий, скажем, этих двух, в форме пересечения наклона

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)

person Martin    schedule 04.03.2012