如何通过轮廓多边形设置按钮?安卓

Posted

技术标签:

【中文标题】如何通过轮廓多边形设置按钮?安卓【英文标题】:How to set button by a contour polygon? Android 【发布时间】:2013-01-16 15:34:25 【问题描述】:

有两个相邻的图形按钮。如果我使用坐标触摸TouchEvent的计算方法,我必须创建一个大的坐标数组。也许还有其他方法?

【问题讨论】:

这就是按钮的样子? 不,设计还没有完成,现在站在十字路口,我想做一个梯形按钮,如果我找到解决我的问题的方法 【参考方案1】:

可能不是最好的解决方案,但您可以重叠两个按钮,每个按钮代表图像的一部分(黑色或白色),并使 Button 图像的其余部分透明(图像将具有相同的尺寸)纽扣)。您还需要扩展Button 类以覆盖onTouchEvent 方法如何处理触摸事件,具体取决于触摸发生的点是透明点还是“图像”点。我制作了一个小示例项目,获得了一个Button,其中包含如下两部分(忽略我的设计技能):

你可以找到project here,这很容易解释。看看对你有没有帮助。

【讨论】:

感谢您的解决方案。它帮助了我。但是,我发现您的样品有问题。如果可绘制对象不在“wrap_content”中(例如,fill_parent),您的项目将崩溃。我已经通过创建这样的位图来修复它: Bitmap b = Bitmap.createScaledBitmap( ((BitmapDrawable) bkg.getCurrent()).getBitmap(), getWidth(), getHeight(), true ); @Sebastien 你是对的,我的代码没有考虑到视图的大小变化(或者比位图本身更大)。我已经更正了示例,并在 onSizeChanged 回调中缩放了 Bitmap,因此它始终具有正确的大小。 您的解决方案比我的更好(在 onSizeChanged 中执行)。再次感谢 :) 但是,我再次对其进行了改进,在创建位图之前,我添加了以下代码: // 位图在内存中占很多位置,尽快释放内存 if (mBitmap != null) mBitmap.回收();

以上是关于如何通过轮廓多边形设置按钮?安卓的主要内容,如果未能解决你的问题,请参考以下文章

如何在 OpenCV 中加入/联合轮廓?

为多边形轮廓绘制圆的最有效方法

opencv 轮廓的外围多边形提取或者删除最小最大轮廓

opencv 轮廓的外围多边形提取或者 删除最小最大轮廓

Three.js将多边形线条(Line)转换成模型(Mesh)

opencv 5 图像轮廓与图像分割修复 2 使用多边形将轮廓包围