【问题标题】:drawing part of a bitmap on an Android canvas在 Android 画布上绘制位图的一部分
【发布时间】:2010-09-29 19:09:24
【问题描述】:

如何在 Android 上将位图的非矩形(例如椭圆)部分粘贴到画布中?

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

目前有四种方法(也许你知道第五种?):

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

  2. 制作掩码位图 - 有办法使用单独的掩码进行 blit 吗?

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

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

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

【问题讨论】:

    标签: android graphics canvas matrix


    【解决方案1】:

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

    【讨论】:

    • 如何配置矩阵?
    • 不知道,看你想画什么。
    • aha,我在谷歌上只能找到一些人说他们需要花费数小时来计算如何设置矩阵,这来自像我这样了解矩阵的人,例如markmail.org/message/qjb6dxotj4jk57n4 - Romain 有人可以记录它并做一些适当的缩放示例吗?
    • 已经在其中绘制了 alpha 模式的中间位图,然后使用 SRC_IN xfer 模式将位图绘制到其中,在中间位图被插入场景之前。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多