我正在为android编写一个应用程序(尽管我认为这是一个普通问题),我需要显示一个可以滚动和缩放的大图像(在ImageView中)。我设法通过捕获触摸事件和执行矩阵转换来实现滚动工作,并且我正在进行缩放。图像缩放的正确转换
如果我只是对图像应用比例变换,它会放大原点,即屏幕的左上角。我想放大屏幕的中心。 从我读过的,这意味着我需要一个转换,使原点为屏幕的中心。我认为,所需要的是类似以下各项假设屏幕的中心是(5,5)为简单起见...
-Translate by (-5, -5)
-Scale by the zoom factor
-Translate by (+5, +5)*zoomfactor
不幸的是,这似乎没有工作 - 变焦似乎走任何地方,但中心......有人可以帮我在这里?
编辑:这是现在工作
Matrix zoommatrix = new Matrix();
float[] centerpoint = {targetimageview.getWidth()/2.0f, targetimageview.getHeight()/2.0f};
zoommatrix.postScale(zoomfactor, zoomfactor, centerpoint[0], centerpoint[1]);
zoommatrix.preConcat(targetimageview.getImageMatrix());
targetimageview.setImageMatrix(zoommatrix);
targetimageview.invalidate();
你可以发表你的转换代码? – AGrunewald 2010-01-29 16:32:50