android - 在 Android Canvas 上绘制位图的一部分

标签 android graphics canvas matrix

如何在 Android 上将位图的非矩形(例如椭圆形)部分 blit 到 Canvas 中?

考虑如何位图的矩形部分: canvas.DrawBitmap(src,src_rect,dest_rect,paint) .遗憾的是,对于非矩形区域没有相应的方法。

四种方法(也许您知道第五种?):

  1. 将你想要位图传输的矩形边界复制到一个中间位图中,然后将你不想位图传输的像素设置为透明,然后绘制该位图

  2. 制作掩码位图 - 有使用单独掩码进行 block 位传输的方法吗?

  3. 使用 BitmapShaderdrawArc()/drawCircle() ;但是,我不知道如何使矩阵 正确对齐;你将如何为这个操作初始化矩阵?

  4. 使用非常非常复杂的裁剪区域

其中,选项 3 是我最想做的;但是,我不知道该怎么做;可以吗?

最佳答案

您可以使用选项 #3,它可能是最简单的。另一种方法是在中间位图 (ARGB8888) 中绘制要剪辑的形状,然后使用 DstInDstOut 绘制原始位图> xfer 模式。

关于android - 在 Android Canvas 上绘制位图的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3824997/

相关文章:

javascript - 用 Canvas 制作一个动画正方形

javascript - Chart.js 条形图中的默认视觉样式

canvas - 如何在Dart中设置和取消全屏 Canvas

android - 布局更改未反射(reflect)在应用程序中

android - 如何设置3 :4 Aspect Ratio Flutter camera preview

java - 在 IDE (Eclipse) 的 LogCat 中没有捕获异常的 StackTrace(由 ACRA)

java - swt中的文本大纲

java - Android:为什么ArrayAdapter一开始显示null?

c - 在 Turbo C++ 程序中编译 c 图形时出错

c# - C#图形矩形剧烈旋转