首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android灵魂画家的18种混合模式

    自己绘过图的筒靴一定见过或者用过mPaint.setXfermode(Xfermode xfermode),它是干什么的呢?...3 Xfermode的意义你知道吗? 在上面的两张图中,CoorChice已经向筒靴们展示了使用Xfermode来混合简单的图形所达到的效果。...如果合理的使用Xfermode去将一些简单的图形进行混合,同样可以获得你所期望的复杂图形。在CoorChice的这篇文章【从未如此惊艳!...当然,这些并不能发挥Xfermode的真正威力。如果你使用它对一些图片进行混合,你会看到Xfermode到底能做什么不可思议的事!...你看,Xfermode就是如此的强大,通过合理的组合,能合成图片。 再一看张CoorChice用图片合成的各种效果: ? 哇!这鱼飞起来啦!

    1.4K20

    Android自定义系列——6.PorterDuffXfermode

    当使用PorterDuffXfermode时,需要将将其作为参数传给Paint.setXfermode(Xfermode xfermode)方法,这样在用该画笔paint进行绘图时,Android就会使用传入的...PorterDuffXfermode,如果不想再使用Xfermode,那么可以执行Paint.setXfermode(null)。...5.在绘制完成后,我们调用paint.setXfermode(null)将画笔去除Xfermode。 具体分析一下白色矩形出现的原因。...一般我们在调用canvas.drawXXX()方法时都会传入一个画笔Paint对象,Android在绘图时会先检查该画笔Paint对象有没有设置Xfermode,如果没有设置Xfermode,那么直接将绘制的图形覆盖...Canvas对应位置原有的像素;如果设置了Xfermode,那么会按照Xfermode具体的规则来更新Canvas中对应位置的像素颜色。

    1.7K21

    不怕搞事,自定义View云扩散效果

    所以这里我就想到使用Xfermode,没错,你看到发散的云,其实又是另一张图片: ? 哈哈哈哈,这张图片一贴出来,你是不是想笑。原来看起来很炫的效果,真实这么搞笑。...我只需要让两个图片使用Xfermode搞基一番,并且在过程中让这个View逐渐透明,遮罩图片逐渐放大即可。 当然,有了思路变成很简单,其实还是有些坑的,说说遇到的坑。...关于Xfermode小伙伴们用到过的可能了解,他有坑,非常大的坑。。经常发现与Demo图出不来一样的效果。...这里再来重复下Xfermode坑如何避免。 最终大总结,如果想让PorterDuffXferMode按照预期Demo(或者效果图)的效果图像实现,必须满足以下条件: 1、关闭硬件加速。...同时第一个View设置gone来避免过度绘制,第二个View绘制的实际上是两个bitmap,并且开启硬离屏缓存来实现Xfermode的正确效果。 ?

    87920

    手撕一个让人「欲罢不能」的水波纹选中控件

    . // 混合裁剪模式 private val xfermode = PorterDuffXfermode(PorterDuff.Mode.SRC_ATOP)...) // 【2.2】取消裁剪模式 ripplePaint.xfermode = null // 【1.2】将图层绘制到canvas上...这篇文章作者也遇到了相同的问题,经过的他实验发现: PorterDuffXfermode 颜色混合中的 SRC 层是在设置xfermode 之前 整个canvas 中的 非透明像素点。...于是这里新建了一个新的 全透明的 图层,由于 canvas.drawPath(clipPath, normalPaint) 绘制的是一个带有圆角的矩形,设置了 xfermode 模式为 SRC_ATOP...先绘制底部 SRC (圆角矩形),然后设置水波纹画笔的 xfermode ,接着绘制 DST (水波纹),最后取消混合模式。 这样,一个带圆角的水波纹就实现了。

    1.4K40
    领券