首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >android将图像划分为子图像,识别

android将图像划分为子图像,识别
EN

Stack Overflow用户
提问于 2015-10-30 19:27:02
回答 2查看 505关注 0票数 0

我想将图像划分为子图像,当我单击图像的某一部分时,将给出该区域的名称,例如,这是我的问题,如何从图像中识别区域,或者如何将图像划分为子图像,并在imageViews中使用它。

预先谢谢你

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-30 20:28:29

在我看来,@压裂扳手的想法对你的案子很有好处。下面列出了基本步骤。

  • 子类Android ImageView。例如,MultiRegionImageView
  • 重写其onTouchEvent方法。(每当用户接触视图时,都会调用此方法)
  • 用户触摸图像,从而调用onTouchEvent并提供确切的触点(x,y)。
  • 声明另一种确定给定点所在区域的方法或接口。例如,getRegionByPoint(int x, int y)
  • 如果要突出显示该区域的边界,可以使用路径。首先,您应该定义路径并将它们保存到一个原始文件中(例如,XML),然后使用区域ID,获取其路径,最后在主图像上绘制该路径。
  • 要在主图像上绘制路径,还应该重写ImageView类的ImageView方法并使用canvas.drawPath();
代码语言:javascript
运行
复制
public class MultiRegionImageView extends ImageView {
    RegionProvider mRegionProvider;
    int mId = -1;
    private Paint mPaint;

    public MultiRegionImageView(Context context) {
        super(context);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        mId = mRegionProvider.getRegionIdByPoint(event.getX(), event.getY());
        return super.onTouchEvent(event);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        if(mId != -1) {
            canvas.drawPath(mRegionProvider.getRegionBoundaryPath(mId), mPaint);
        }
    }

    public interface RegionProvider{
        int getRegionIdByPoint(float x, float y);
        Path getRegionBoundaryPath(int id);
    }
}
票数 1
EN

Stack Overflow用户

发布于 2015-10-30 20:00:56

您应该只需要一个ImageView来显示地图。如果您重写onTouchEvent(MotionEvent e),您可以获得视图中正在被触摸的位置。如果将每个区域的位置和形状存储在某种类型的列表中,则可以检查触摸事件是否在区域内(并显示所需的任何文本)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33443515

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档