2

我正在尝试制作一个应用程序,我可以在其中放大并在图像上绘制一些东西,我使用以下链接制作可缩放的图像视图,该视图正在 为图像提供良好的缩放功能

现在的问题是,当我在画布上绘制的内容被缩小时,我不知道如何缩放和转换为图像大小。以下是 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;

}

}

4

3 回答 3

1

请尝试此代码

public boolean onTouchEvent(MotionEvent env) {
float x = env.getX() / mScaleFactor + rect.left;
float y = env.getY() / mScaleFactor + rect.top;
}
于 2013-07-15T12:48:14.963 回答
1

使用此代码

public boolean onTouchEvent(MotionEvent env) {
float x = env.getX() / mScaleFactor + rect.left;
float y = env.getY() / mScaleFactor + rect.top;
}
于 2013-07-15T13:43:47.113 回答
0

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

于 2012-10-29T08:08:29.883 回答