首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Android中旋转可绘制图形

在Android中旋转可绘制图形
EN

Stack Overflow用户
提问于 2011-01-22 03:47:36
回答 4查看 31.6K关注 0票数 20

如何在绘制时旋转从资源加载的Drawable?例如,我想要绘制一个箭头,并且能够在绘制时将其旋转到不同方向。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-01-22 05:19:36

您需要使用Bitmap和Canvas类函数来准备drawable:

代码语言:javascript
复制
Bitmap bmpOriginal = BitmapFactory.decodeResource(this.getResources(), R.drawable.image2);
Bitmap bmResult = Bitmap.createBitmap(bmpOriginal.getWidth(), bmpOriginal.getHeight(), Bitmap.Config.ARGB_8888);
Canvas tempCanvas = new Canvas(bmResult); 
tempCanvas.rotate(90, bmpOriginal.getWidth()/2, bmpOriginal.getHeight()/2);
tempCanvas.drawBitmap(bmpOriginal, 0, 0, null);

mImageView.setImageBitmap(bmResult);

在此代码中,示例将图像中心旋转90度。

票数 21
EN

Stack Overflow用户

发布于 2011-08-11 15:56:17

从本质上讲,它可以归结为:进行(n逆)画布变换,而不是变换drawable

代码语言:javascript
复制
private BitmapDrawable drawable; // or Drawable

protected void onDraw(Canvas canvas) { // inherited from View 
  //...
  canvas.save();
  canvas.rotate(degrees, pivotX, pivotY);
  drawable.draw(canvas);
  canvas.restore();
  //...
}

如果使用BitmapDrawable,则可能需要通过设置抗锯齿来提高输出质量

代码语言:javascript
复制
drawable.setAntialias(true);
票数 10
EN

Stack Overflow用户

发布于 2016-06-01 22:26:08

可接受的答案对我不起作用。我有非正方形的图像,所以我对他的代码做了一些修改。

代码语言:javascript
复制
private Bitmap rotateDrawable(@DrawableRes int resId) {
    Bitmap bmpOriginal = BitmapFactory.decodeResource(getResources(), resId);
    Bitmap bmpResult = Bitmap.createBitmap(bmpOriginal.getHeight(), bmpOriginal.getWidth(), Bitmap.Config.ARGB_8888);
    Canvas tempCanvas = new Canvas(bmpResult);
    int pivot = bmpOriginal.getHeight() / 2;
    tempCanvas.rotate(90, pivot, pivot);
    tempCanvas.drawBitmap(bmpOriginal, 0, 0, null);
    return bmpResult;
}

mImageView.setImageBitmap(rotateDrawable(R.drawable.some_image));
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4763103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档