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

时间:2012-10-17 07:10:31

标签: android

我正在尝试制作一个应用程序,我可以放大并在图像上绘制一些东西 我使用以下链接来制作一个工作正常的可缩放图像视图 zoom functionality for images

现在问题是我不知道如何缩放并将我在画布上绘制的任何内容翻译成缩小时的图像大小。 以下是onDraw()函数。 我已经记录了将它们添加到列表中的触摸点,并且在我的视图的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;

}

}

3 个答案:

答案 0 :(得分:1)

请尝试此代码

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

答案 1 :(得分:1)

使用此代码

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

答案 2 :(得分:0)

你可以从矩阵中得到9点阵列,其中包含x和y中的相对x,y和比例因子,使用它来将当前x,y(相对于屏幕)转换为x,y on原始图像并在不同缩放级别上再次绘制之前重新转换。