2014-09-11 3 views
0

У меня есть два изображения, изображениеA = 800x600, а другое изображениеB = 1440x900. Если я, например, нажимаю на изображение в координатах 50x50, как я могу преобразовать его в значение imageB с правильным местоположением?Преобразование точки мыши

+0

Является ли последняя извращенной версией первой? Каково правило преобразования координат между ними? – zerkms

ответ

0
newX = x * 1440/800; 
newY = y * 900/600; 
0

Сначала вычислите разностные отношения (newX/oldX), а затем умножьте их. Одним словом для практического примера:

int newX = (50*1440)/800; 
int newX = (50*900)/600); 

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

0

Этот код рассматривает целочисленные координаты как центр пикселя, и он также работает и по краям.

x2 = round((x + 0.5) * 1440.0/800.0); 
y2 = round((y + 0.5) * 900.0/600.0); 

Редактировать: это предполагает, что (0,0) Ваш угол не (1,1). Это обычно так.

+0

'round (x + 0.5)' <--- Какой смысл для этого? А что такое «круглый»? – zerkms

+0

'round' - это http://www.cplusplus.com/reference/cmath/round/ в стандартной библиотеке C, и я забыл о скобке. Я исправлю это. –

+0

'C (++)! ======== C#' (оператор, который я только что использовал, означает «очень не равно») – zerkms

Смежные вопросы