【问题标题】:canvas drawBitmap only part of image画布drawBitmap只是图像的一部分
【发布时间】:2015-06-02 16:34:34
【问题描述】:

如何通过 canvas.drawBitmap() 使用画布绘制位图的一部分?

例如我有以下位图

我只需要画这部分

是否可以使用 canvas.drawBitmap 或者我需要其他东西?

【问题讨论】:

  • 如果你只需要像这样画一个楔子,你可以改用Canvas#drawArc() 方法之一。
  • 更新问题。现在可以用 BitmapShader 完成吗?
  • 结合我的第一条评论和@MikeM。评论

标签: android android-layout bitmap


【解决方案1】:

您可以使用PorterDuff modes。检查下图以了解它:

例如,您可以绘制位图,然后在 SRC-OUT 模式下消除其中的一部分绘制蒙版。 或者您可以绘制蒙版,然后使用 DST-OUT 绘制位图。

有几个选项,只是测试它们。

这是一个如何将模式应用于您的绘画的示例

Paint mPaint;

mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_OUT);

【讨论】:

  • 如何处理 2 个位图? c.drawBitmap(bitmap1, null, new Rect(0, 0, 100, 150), null); c.drawBitmap(bitmap2, null, new Rect(0, 0, 100, 150), null);试过这个,但得到黑色方块 c.drawBitmap(bitmap1, null, new Rect(0, 0, 100, 150), null); paint.setXfermode(新 PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); c.drawBitmap(bitmap2, null, new Rect(0, 0, 100, 150), paint);
  • @Droid 你不需要 2 个位图,只需使用 BitmapShader
猜你喜欢
  • 2014-02-28
  • 2014-09-25
  • 1970-01-01
  • 1970-01-01
  • 2017-12-27
  • 2019-12-29
  • 1970-01-01
  • 1970-01-01
  • 2013-10-03
相关资源
最近更新 更多