Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在画布上查找形状(路径)的中心(Android Studio)_Android_Canvas_Shapes - Fatal编程技术网

在画布上查找形状(路径)的中心(Android Studio)

在画布上查找形状(路径)的中心(Android Studio),android,canvas,shapes,Android,Canvas,Shapes,在Android studio中是否可以在画布上找到形状的中心?我已经记录了接触点,但似乎还没弄清楚。但是,画布(0,0)点似乎位于左上角,但画布上的路径/形状将中心点视为(0,0) 作为我所说的一个例子,请查看附件中的图片,我试图找到绿点的位置 提前感谢您的帮助 要找到路径的中心,请使用将第一个参数RectF边界设置为路径范围的方法。然后,只需要得到左右和上下坐标的平均值,就可以得到路径的几何中心 // mPath is your path. Must contain more than 1

在Android studio中是否可以在画布上找到形状的中心?我已经记录了接触点,但似乎还没弄清楚。但是,画布(0,0)点似乎位于左上角,但画布上的路径/形状将中心点视为(0,0)

作为我所说的一个例子,请查看附件中的图片,我试图找到绿点的位置

提前感谢您的帮助


要找到
路径的中心,请使用将第一个参数
RectF边界设置为路径范围的方法。然后,只需要得到左右和上下坐标的平均值,就可以得到路径的几何中心

// mPath is your path. Must contain more than 1 path point
RectF bounds = new RectF();
mPath.computeBounds(bounds, false); // fills rect with bounds
PointF center = new PointF((bounds.left + bounds.right) / 2,
                           (bounds.top + bounds.bottom) / 2);
不需要数学计算


非常感谢-DJust提到,对于高度不规则的形状,可以计算质心(简单中心质量)=所有x点的平均值和所有y点的平均值。但海报上的问题似乎不需要如此精练。:-)@标记路径对象不允许访问点,因此添加点时必须计算点的质心。但是使用这些点并不能给出一个好的质心。Eg你有2点(0,0)和(0,10),然后在2单位(100,5)内,点质量中心将位于最右边和视觉(或区域)质心,左边(500,5),除了一堆复杂的数学之外,你可以使用画布来渲染路径(低分辨率)。然后得到非透明像素坐标的平均值,以获得良好的视觉质量中心。即使是自定义形状,computeBounds也能为我工作。
RectF bounds = new RectF();
mPath.computeBounds(bounds, false);
float centerX = rectF.centerX();
float centerY = rectF.centerY();