【问题标题】:Android - How to center Path on Canvas to screen with a given X and Y coordinate as the centerAndroid - 如何以给定的 X 和 Y 坐标为中心在 Canvas 上居中路径
【发布时间】:2017-08-23 17:39:05
【问题描述】:

我有以下代码来绘制 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 坐标应用到屏幕中心?我问的原因是因为我正在开发一个应用程序,你站在一个传感器上,你站在一个特定的位置,我希望我的路径在绘制路径之前以该初始点为中心。我有两个浮点值,centerXcenterY,我想以某种方式应用于我的路径。不幸的是,如果我在乘以scaleXscaleY 之前应用它们,则翻译太大,而如果我之后再做,则翻译太小。

这是scaleX的声明:

scaleX = ((screenW / sensorWidth) * 1.1f) - ((screenW / sensorWidth) * 0.1f);

scaleYscreenHsensorLength 方面的定义类似。

如何应用传感器的新中心坐标,新中心位于屏幕中心?

【问题讨论】:

    标签: android canvas android-canvas


    【解决方案1】:

    不确定我有没有收到你的问题,但这个公式看起来很糟糕:

    scaleX = ((screenW / sensorWidth) * 1.1f) - ((screenW / sensorWidth) * 0.1f);

    一个更简单的版本是:

    scaleX = screenW / sensorWidth;

    【讨论】:

      【解决方案2】:

      我终于明白了: mPath.offset((centerX - (sensorWidth / 2)) * -scaleX, (centerY - (sensorLength / 2)) * -scaleY);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多