我有以下代码来绘制Canvas的路径:
if (mPointArray.size() > 1) {
mPath.moveTo(mPointArray.get(0).x * scaleX, mPointArray.get(0).y * scaleY);
for (int x = 1; x < mPointArray.size(); x++) {
mPath.lineTo(mPointArray.get(x).x * scaleX, mPointArray.get(x).y * scaleY);
}
canvas.drawPath(mPath, mPaint);
canvas.drawPoint(mPointArray.get(mPointArray.size() - 1).x * scaleX, mPointArray.get(mPointArray.size() - 1).y * scaleY, pointPaint);
}
假设我有一个任意的X和Y坐标作为指定的中心,我如何将X和Y坐标应用到屏幕的中心?我问的原因是因为我正在开发一个应用程序,你站在一个传感器上,你站在一个特定的位置,我希望我的路径在绘制路径之前以该初始点为中心。我有两个浮点值,centerX
和centerY
我想以某种方式应用于我的路径。不幸的是,如果我在乘以scaleX
和scaleY
之前应用它们,则翻译太大,而如果我之后再翻译,则翻译太小。
以下是scaleX
的声明:
scaleX = ((screenW / sensorWidth) * 1.1f) - ((screenW / sensorWidth) * 0.1f);
scaleY
在screenH
和sensorLength
方面的定义相同。
如何应用传感器的新中心坐标,新中心位于屏幕中央?
答案 0 :(得分:1)
我不确定我的问题,但这个公式看起来很恶心:
scaleX =((screenW / sensorWidth)* 1.1f) - ((screenW / sensorWidth)* 0.1f);
更简单的版本是:
scaleX = screenW / sensorWidth;
答案 1 :(得分:0)
我终于明白了:
mPath.offset((centerX - (sensorWidth / 2)) * -scaleX, (centerY - (sensorLength / 2)) * -scaleY);