【问题标题】:Rotate a Drawable in Android在 Android 中旋转 Drawable
【发布时间】:2016-08-31 21:23:04
【问题描述】:

如何在 android 中旋转 Drawable?

我有一个继承自 Drawable 并覆盖 Draw(canvas) 方法的类,以创建一个箭头,我需要将其放置在一条线上并旋转它以匹配线的斜率。

我不知道如何旋转 Drawable;我在这方面看到的一切都是如何旋转位图,而不是 Drawable。

我曾尝试先旋转画布,但这会导致奇怪的结果。

有什么建议吗?

我看到很多人讨论的最后一件事是:

how to rotate a bitmap 90 degrees

【问题讨论】:

  • bitmapDrawable.getBitmap();然后使用得到的位图进行旋转。
  • @Mr.Rao 我已经尝试过了,但它似乎不起作用。我将用一个例子编辑上面的问题
  • 这能回答你的问题吗? Rotating Image on A canvas in android

标签: c# android canvas xamarin bitmap


【解决方案1】:

所以我想通了。似乎有一种非常具体的方式,您必须旋转画布才能在其上旋转可绘制对象:

canvas.Save(SaveFlags.Matrix);
canvas.Rotate(_degrees, _location.X, _location.Y);
canvas.DrawPath(path, _paint);
canvas.Restore();

所以基本上,你保存画布的当前状态,旋转它(这里,我使用 _location 保存用户从屏幕上抬起手指的点),然后在旋转的画布上绘制,然后恢复它到它之前的状态(绘制的drawable仍然绘制)。

【讨论】: