【发布时间】:2015-05-05 21:00:03
【问题描述】:
我的自定义图像视图有问题:
视图设置为矩阵类型。我基本上将地图(室内平面图)加载到此自定义视图中,并希望通过多点触控进行拖动、缩放和旋转。我成功了,但是当我像这样旋转视图时问题发生了:
m_Matrix.PostRotate(mAngle, m_Width/2, m_Height/2);
ImageMatrix = m_Matrix;
,然后将其缩放为 1:
m_Matrix.PostScale(1/Scale,1/Scale,m_Width/2,m_Height/2);
ImageMatrix = m_Matrix;
;其中 Scale 是旧比例,m_width 和 m_height 是原始宽度和高度。我发现图像从 0-90 和 180-270 变大,从 90-180 和 270-360 恢复正常。我研究并知道图像在旋转时会变大。美好的!现在我想知道每次旋转后的新尺寸,以便我计算新的比例并应用它,这样图像在旋转后对用户来说看起来很稳定。
现在的问题是,当图像旋转时,view.getwidth 和 getheight 确实返回了原始宽度和高度。我也试过 view.measure() 然后检查测量的宽度和高度,但结果相同。唯一的成功是使用:
Bitmap originalBitmap = ((BitmapDrawable)Drawable).Bitmap;
Bitmap newBitmap = Bitmap.CreateBitmap(originalBitmap, 0, 0,
m_Width, m_Height, m_Matrix, true);
它现在给了我新的尺寸,但问题是它需要大量内存,因此我无法在每次旋转后创建新的位图。
现在您能就此提出建议吗?再次总结:旋转后的 postscale(1) 确实显示了更大的图像,但在测量时不会改变视图的大小。我想获得新的维度。
提前非常感谢。阿米尔
【问题讨论】: