android - 我们可以放大缩小我们在 Canvas 上绘制的绘图 android

标签 android

我正在尝试制作一个可以放大图像并在图像上绘制一些内容的应用程序 我使用以下链接制作了一个工作正常的可缩放 ImageView zoom functionality for images

现在的问题是,我不知道如何在 Canvas 上绘制的内容缩放和转换为缩小时的图像尺寸。 以下是 onDraw() 函数。 我已经记录了将它们添加到列表中的触摸点,在我看来,我正在检索这些点,但这些点是相对于 screen 的 onDraw() 函数。 我必须根据图像操作对其进行平移和缩放(在放大/缩小图像的情况下)。

 protected void onDraw(Canvas canvas) {
super.onDraw(canvas);

if(mMarkers!=null)
{
for(Marker m : mMarkers) {
    // draw the marker
     Log.v("IP","position"+ m.x+"    "+ m.y);
    Paint paint=new Paint();
    paint.setARGB(255, 2, 255, 2);
    canvas.drawText("O", m.x, m.y, paint);

    if(x!=-1){
         Log.v("IP","LINE"+x+"   " + y+ "  "+ m.x+"    "+ m.y);
    canvas.drawLine(x, y,m.x, m.y, paint);
    }
    x=m.x;
    y=m.y;
}
x=y=-1;

}

}

最佳答案

使用此代码

public boolean onTouchEvent(MotionEvent env) {
float x = env.getX() / mScaleFactor + rect.left;
float y = env.getY() / mScaleFactor + rect.top;
}

关于android - 我们可以放大缩小我们在 Canvas 上绘制的绘图 android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12928966/

相关文章:

Android canvas paint 无法设置深色

android - 将日期从默认语言环境转换为英语语言环境

Android导航组件+登录流程+嵌套BottomNavigationView

android - 在 ListView 中显示 sdcard 文件夹中的视频文件

java - 在来电 Android 中打开扬声器

android - Proguard 错误,无法导出应用程序

android - 是否可以通过 MediaRecorder 或其他类获取当前样本幅度

Android: 执行 doInBackground , TextView 的 setText

java - 在每个循环中,我想在最后一次迭代中跳过 ", "

android - 如何在 ImageView 顶部设置自定义文本界面?