Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Нахождение координат / 9 сообщений из 9, страница 1 из 1
17.05.2013, 06:41:15
    #38261263
GorloPavel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нахождение координат
Здравствуйте. Не могу сообразить как найти ширину и высоту видимого участка зумированного изображения. Точку (x,y) определил, теперь никак не могу понять как определить размеры отрисовываемой области. Помогите пожалуйста! Заранее ОГРОМНОЕ спасибо!

Код:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
............................
       canvas.drawBitmap(firstBitmap,matrix,mPaint);//Рисуем видимую область
............................
............................

       public boolean onTouch(View v, MotionEvent event) {
		PanZoomWithTouch(event);
        return true;
	}

	
	void PanZoomWithTouch(MotionEvent event) {
		switch (event.getAction() & MotionEvent.ACTION_MASK) {
		case MotionEvent.ACTION_DOWN:
			savedMatrix.set(matrix);
			start.set(event.getX(), event.getY());
			mode = PAN;
			break;
		case MotionEvent.ACTION_POINTER_DOWN:
			oldDist = spacing(event);
			if (oldDist > 10f) {
				savedMatrix.set(matrix);
				midPoint(mid, event); 
				mode = ZOOM;
			}
			break;
		case MotionEvent.ACTION_UP:
		case MotionEvent.ACTION_POINTER_UP: 
			mode = NONE;
			break;
		case MotionEvent.ACTION_MOVE: 
			if (mode == PAN) {
				// ...
				matrix.set(savedMatrix);
				matrix.postTranslate(event.getX() - start.x, event.getY()- start.y);
				logImageViewMatrixInfos(matrix,firstBitmap);
				
			} else if (mode == ZOOM) { 
				float newDist = spacing(event);
				if (newDist > 10f) {
					matrix.set(savedMatrix);
					float scale = newDist / oldDist;
					matrix.postScale(scale, scale, mid.x, mid.y);
					logImageViewMatrixInfos(matrix,firstBitmap);
				}
			}
			break;
		}
	}

	/** Determine the space between the first two fingers */
	private float spacing(MotionEvent event) {
		// ...
		float x = event.getX(0) - event.getX(1);
		float y = event.getY(0) - event.getY(1);
		return FloatMath.sqrt(x * x + y * y);
	}

	/** Calculate the mid point of the first two fingers */
	private void midPoint(PointF point, MotionEvent event) {
		// ...
		float x = event.getX(0) + event.getX(1);
		float y = event.getY(0) + event.getY(1);
		point.set(x / 2, y / 2);
	}
       
       public void logImageViewMatrixInfos(Matrix matrix, Bitmap imageView) {
           float[] values = new float[9];
           matrix.getValues(values);
           float globalX = (int) values[2];
           float globalY = (int) values[5];
           float width = (values[0]* imageView.getWidth());//Новая ширина всего изображения
           float height =  (values[4] * imageView.getHeight());Новая высота всего изображения

           float _x=0;
           float _y=0;

 
           if(globalX<0)
           {
        	   _x=(globalX*-1)*values[0];//Точка X
           }

           if(globalY<0)
           {
        	   _y=(globalY*-1)*values[0];//Точка Y
           }
    }

...
Рейтинг: 0 / 0
17.05.2013, 10:50:17
    #38261516
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нахождение координат
GorloPavel,
ты бы картинку нарисовал.
В винде есть в API преобразователь координат Локальные-Глобальные
...
Рейтинг: 0 / 0
17.05.2013, 11:12:11
    #38261566
GorloPavel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нахождение координат
Petro123,

Вообщем мне нужно знать размер участка вот изображения которое я сейчас вижу при зуме изображения. Помогите пожалуйста. Весь день сижу уже над этой "математикой".
...
Рейтинг: 0 / 0
17.05.2013, 11:12:29
    #38261568
GorloPavel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нахождение координат
Еще может быть так:
...
Рейтинг: 0 / 0
17.05.2013, 11:13:15
    #38261571
GorloPavel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нахождение координат
Вот так:
...
Рейтинг: 0 / 0
17.05.2013, 11:26:39
    #38261598
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нахождение координат
GorloPavel,

Окно.ClientRect
Canvas.Ширина....Высота
Bitmap.Ширина....Высота

Если зуммируется окно, то в событии самого окна при зумме на каждый пиксель уже будет приходить новая ширина и высота
...
Рейтинг: 0 / 0
17.05.2013, 11:38:18
    #38261624
GorloPavel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нахождение координат
Petro123,

Зумируется изображение. Т.е я всегда могу получить новый размер изображения и смещение x,y этого изображения относительно окна в котором оно отрисовывается. Вот я и не могу понять как мне размер видимого через это окно участка узнать?
...
Рейтинг: 0 / 0
17.05.2013, 12:03:18
    #38261672
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нахождение координат
GorloPavel,
я в терминах Java не силён.
- нет слова "изображения". Есть класс А, В, С, Bitmap.
Если ты делаешь с исп-ием библиотек, то ресайзится окно, а картинка битмап там со свойством - заполнить.
Если всё руками, то.....на канву десктопа просто впечатываешь рисунок? А ресайзишь руками на MouseMove десктопа?
...
Рейтинг: 0 / 0
17.05.2013, 12:33:10
    #38261735
GorloPavel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нахождение координат
Petro123GorloPavel,
я в терминах Java не силён.
- нет слова "изображения". Есть класс А, В, С, Bitmap.
Если ты делаешь с исп-ием библиотек, то ресайзится окно, а картинка битмап там со свойством - заполнить.
Если всё руками, то.....на канву десктопа просто впечатываешь рисунок? А ресайзишь руками на MouseMove десктопа?

К сожалению я не понял :(

p.s: Это Android приложение.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Нахождение координат / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]