参数'Paint'在Android的Canvas.drawBitmap()方法中的效果

时间:2014-08-15 13:31:07

标签: java android

我试图在Android SDK中阅读示例FingerPaint,其中<​​strong> canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint) onDraw() 中调用。

我对参数mBitmapPaint感到困惑。当我更改mBitmapPaint的设置时似乎没有效果。屏幕上绘制的位图样式仅取决于在其他位置定义的mPaint的设置。谷歌的Android参考说明参数paint可能为空,这是否意味着paint这里没用?为什么在这个方法中加上paint参数?

宣布为:

  

public void drawBitmap(位图位图,向左浮动,浮动顶部,绘制颜料)

     

使用指定的颜色绘制指定的位图,其顶部/左角位于(x,y),由当前矩阵转换。

     

参数

     
      
  • 位图要绘制的位图
  •   
  • 正在绘制位图左侧的位置
  •   
  • 顶部正在绘制位图顶部的位置
  •   
  • paint 用于绘制位图的绘制(可能为null)
  •   

以下是代码的一部分:

private Bitmap  mBitmap;
private Canvas  mCanvas;
private Path    mPath;
private Paint   mBitmapPaint;

mPaint = new Paint();
mPath = new Path();
mBitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
mCanvas = new Canvas(mBitmap);

/*
 * Set the styles of mPaint here
 * ......
 */

// Settings of mBitmapPaint seem to make no difference
mBitmapPaint = new Paint(Paint.DITHER_FLAG);

@Override
protected void onDraw(Canvas canvas) {
    canvas.drawColor(0xFFAAAAAA);
    canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint);
    canvas.drawPath(mPath, mPaint);
}

3 个答案:

答案 0 :(得分:1)

Bitmap的绘制几乎没用,我认为适用于Bitmap的paint对象的唯一参数是AntiAliasing模式,默认情况下是打开的。我认为您也可以使用油漆作为黑白滤色镜,但在大多数情况下,您也可以使用null

答案 1 :(得分:0)

主要用于设置抗锯齿和双线性采样:

答案 2 :(得分:0)

实际上,{Bit {1}}仅适用于位图为Canvas.drawBitmap(Bitmap, Rect, Rect, Paint)格式的绘画,但是。可以使用Bitmap.Config.ALPHA_8随时随地轻松转换。对于应用了BitmapShader的Paint尤其有用。

没有足够提及,所以我想我将为这个老问题添加一个答案。