2011-09-06 56 views
0

我坚持以下问题提取区域:如何从Android位图

我有一个Android的位图,一组4个坐标,代表一个矩形。但是,矩形可能会旋转。例如,我可能有坐标0/50,50/0,100/50,50/100。因此,我不能简单地使用Canvas drawBitmap(位图位图,Rect src,RectF dst,Paint paint)函数,因为我无法在rect对象中指定此类坐标。提取这种矩形的最佳方法是什么?

+0

查看SDK附带的Lunar着陆器示例代码。在LunarView.java中搜索'rotate'。这会告诉你他们如何旋转飞船的图画。 – NickT

回答

1

你可以计算矩形倾斜的角度吗?在这种情况下,您可以旋转画布:

canvas.rotate(angle, px, py); 

其中,px和py是矩形中心的坐标。

然后执行drawBitmap(位图位图,Rect src,RectF dst,Paint paint)。

+0

我可以计算角度。但是,如何将先前计算的点转换为与旋转的画布对应的点?根据我的经验,Matrix的mapPoints函数并不适用。至少这是我用旋转矩阵旋转图像时所经历的,并试图在之后映射原始点。不过,也许值得再试一次,猜猜我会看看它是否有效。 – Christian

+0

我想我误解了画布上的旋转是如何工作的。所以这个可以旋转Canvas本身。根据我的理解,这将导致我之前倾斜的矩形现在被分配。但我看不出它是如何解决这个问题的,我无法指定我想要首先切出的矩形的坐标。 @NickT从我第一眼看到LunarView示例时,似乎也是在那里做的。他们有一个anligned图像,并希望它被绘制旋转一定程度。另一方面,我想以某种方式反过来。 – Christian