【问题标题】:Effect of parameter ‘Paint’ in Android‘s Canvas.drawBitmap() methodAndroid的Canvas.drawBitmap()方法中参数‘Paint’的效果
【发布时间】:2014-08-15 13:31:06
【问题描述】:

我试图在 Android SDK 中读取示例 FingerPaint,其中方法 canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint)onDraw() 中调用。

我被参数mBitmapPaint弄糊涂了。当我更改mBitmapPaint的设置时,它似乎没有效果。在屏幕上绘制的位图样式仅取决于在其他地方定义的mPaint 的设置。 Google 的 Android Reference 说参数paint 可能为空,这是否意味着这里的paint 没用?为什么要在这个方法中放一个paint参数?

声明为:

public void drawBitmap(Bitmap bitmap,float left,float top,Paint paint)

使用指定的绘制绘制指定的位图,其上/左角在 (x,y),由当前矩阵转换。

参数

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

这里是部分代码:

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);
}

【问题讨论】:

  • 例如你可以使用 xfer 模式
  • @pskink 谢谢 :)

标签: java android


【解决方案1】:

位图的绘制几乎没有用,我认为适用于位图的绘制对象的唯一参数是默认情况下打开的抗锯齿模式。我认为您也可以将颜料用于黑白等颜色过滤器,但在大多数情况下,您也可以使用null

【讨论】:

  • 谢谢您...但是有这样的规则吗?我在 Google 的参考资料中找不到
  • @Soap 你所说的“规则”是什么意思?参考点击 [这里] ("developer.android.com/reference/android/graphics/…, float, float, android.graphics.Paint)")
  • 我的意思是什么时候使用油漆的规则,但我想我明白了,再次感谢:)
  • 规则很简单:如果需要,使用一个。如果您对绘制位图的默认设置没问题,则不需要绘制。但是,如果您想更改设置的某些内容,例如关闭抗锯齿,你必须使用油漆。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    实际上,Canvas.drawBitmap(Bitmap, Rect, Rect, Paint) 可以正常使用绘画,但是仅当位图为 Bitmap.Config.ALPHA_8 格式时。可以使用Bitmap.copy(Bitmap.Config.ALPHA_8, true/false) 在旅途中轻松转换。它对应用了 BitmapShader 的 Paint 特别有用。

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

    【讨论】:

      猜你喜欢
      • 2012-03-30
      • 1970-01-01
      • 1970-01-01
      • 2013-02-06
      • 2017-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-07
      相关资源
      最近更新 更多