iPhone, Map, Clickable non-rectangular areas

独自空忆成欢 提交于 2019-11-28 20:55:59

How are these regions defined? If you can get the point data, then create a CGPath using:

CGPathRef path = CGPathCreateMutable();
CGPathMoveToPoint(path,null,xpoints[0],ypoints[0])
for (int i = 1; i < numpoints; ++i) {
  CGPathAddLineToPoint(path,null,xpoints[i],ypoints[i]);
}
CGPathCloseSubpath(path);

Then whenever the user touches, for each region, check whether it contains the touch point:

if (CGPathContainsPoint(path,null,touchPoint,false)) ...

And don't forget to release when you're done with the regions:

CGPathRelease(path);

Note that you can create several separate subpaths in one CGPathRef and it will check all the subpaths when you check for containment.

If you want to, you can try using arcs or curves to get the lines right, but that's something I'm not too familiar with.

Maybe you need a color coded bitmap to do your hit testing against.

You would have one bitmap to display, but another bitmap that has single-color-coded regions. When the user clicks on the display map you check out what color that pixel is in your hit test map, and then perform the approriate action.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!