使用drawBitmap缩放位图

3
基本上,我有一张640 x 480的图片,我想要使用drawBitmap进行缩放和绘制。为了简单起见,我们假设我有一台854 x 480的安卓屏幕。以下是我的代码:
MainActivity.java
public class MainActivity extends Activity
{
  @Override
  public void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);
    setContentView(new MainLayout(this));
  }
}
class MainLayout extends RelativeLayout
{
  public MainLayout(Context context)
  {
    super(context);
    setWillNotDraw(false);
  }
  @Override
  public void onDraw(Canvas canvas)
  {
    super.onDraw(canvas);
    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.background);
    bitmap = Bitmap.createScaledBitmap(bitmap, 854, 480, true);
    canvas.drawBitmap
    (
      bitmap,
      null,
      new Rect(0, 0, 854, 480),
      null
    );
  }
}

结果与我想要的不同。有什么建议吗?

只是一条提示。如果您想要简单的正方形结果,无论您需要缩放还是放大,请使用这个非常方便的技巧... https://dev59.com/Cmw05IYBdhLWcg3w_Guw#17733530 - Fattie
1个回答

7

使用这个

Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setFilterBitmap(true);
paint.setDither(true);

canvas.drawBitmap(bitmap, x, y, paint);

非常好的答案,我在缩放矩阵时没有使用paint.setDither(true),导致位图质量很差,但现在一切都完美了。 - Yev Kanivets
1
@evgenii 谢谢兄弟 :) - Shyam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接