Как проверить, находятся ли два изображения в одной позиции? - PullRequest
2 голосов
/ 05 марта 2012

Я работаю в проекте, где изображения можно перетаскивать. В котором, если я помещаю одно изображение поверх другого, изображение должно быть изменено. Что мне нужно 1) Я хочу проверить, находятся ли оба изображения в одном месте или нет. 2) Положение изображения не должно быть точным. Оно может быть приблизительно равно

Ответы [ 4 ]

8 голосов
/ 05 марта 2012

Если вы хотите проверить, пересекаются ли два UIImages, это хороший способ:

CGRect rect1 = myView1.frame;
CGrect rect2 = myView2.frame;

if (CGRectIsNull(CGRectIntersection(rect1, rect2))) {
    //They collide
}

У вас есть вся необходимая информация об этом здесь:

https://developer.apple.com/library/mac/#documentation/graphicsimaging/reference/CGGeometry/Reference/reference.html

4 голосов
/ 05 марта 2012
//for checking whether one image is inside another image
if(CGRectContainsRect(ImageView1.frame, ImageView2.frame))
{
    //your code for overlapping here
}

//for checking whether one image intersects another
if(CGRectIntersectsRect(ImageView1.frame,ImageView2.frame))
{
    //your code for intersection here        
}
2 голосов
/ 05 марта 2012

Вот подход, предполагающий, что изображения имеют одинаковый размер

// using ints because it is easier for taking the abs value
int dx,dy;

dx = frame1.origin.x - frame2.origin.x;
dy = frame1.origin.y - frame2.origin.y;
dx = abs(dx);
dy = abs(dy);

// overlapping width and height
int ovHeight, ovWidth;

ovWidth = frame1.size.width-dx;
ovHeight = frame1.size.height-dy;

int ovArea = ovWidth*ovHeight;
int imageArea = frame1.width*frame1.height;

int percentOverlap = ovArea*100/imageArea;

if (percentOverlap > 80) {
  // do work here
}
1 голос
/ 05 марта 2012
CGRect frame1 = imgView1.frame;
CGRect frame2 = imgView2.frame;

это даст вам две структуры кадра .. которые состоят из origin (x, y) значений и size (width, height) values ​​..

сравните в соответствии с вашими потребностями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...