【Android 应用开发】Paint 图形组合 Xfermod 之 合成模式表示方法 ( Xfermod 使用步骤 | 透明度 颜色值 公式表示方法 | 老版本表示方法 | 合成区域分块 )

简介: 【Android 应用开发】Paint 图形组合 Xfermod 之 合成模式表示方法 ( Xfermod 使用步骤 | 透明度 颜色值 公式表示方法 | 老版本表示方法 | 合成区域分块 )

Xfermod 使用步骤


Xfermod 使用步骤 :



① 创建画笔 : 注意 , 绘制 源图像 和 目标图像 , 以及设置 Xfermod 图形组合模式 , 使用的都是这个画笔 ;


//创建画笔
 Paint paint = new Paint();



② 绘制 目标图像 ( Destination Image ) : 先绘制的是目标图像 , 设置 Xfermod 图形组合模式后 , 绘制的是源图像 ;


//绘制目标图像 ( Destination Image )
 canvas.drawBitmap(destinationImage, 0, 0, paint);


③ 设置 Xfermod 图形组合模式 : 设置 18 种 Xfermod 模式之一 , 创建 PorterDuffXfermode 对象 ( 传入模式对应的常量 ) , 将 Xfermod 对象设置给画笔 Paint 对象 ;


PorterDuff.Mode mode = // choose a mode
 paint.setXfermode(new PorterDuffXfermode(mode));


④ 绘制 目标图像 ( SourceImage ) : 先绘制的是目标图像 , 设置 Xfermod 图形组合模式后 , 绘制的是源图像 ;

//绘制 源图像 ( SourceImage ) 
 canvas.drawBitmap(sourceImage, 0, 0, paint);



⑤ 代码总结 : 使用 Xfermod 的四个步骤 :


// 1.创建画笔
 Paint paint = new Paint();
 // 2.绘制目标图像
 canvas.drawBitmap(destinationImage, 0, 0, paint);
 // 3.设置 Xfermod 图形组合模式
 PorterDuff.Mode mode = // choose a mode
 paint.setXfermode(new PorterDuffXfermode(mode));
 // 4.绘制 源图像 ( SourceImage ) 
 canvas.drawBitmap(sourceImage, 0, 0, paint);



合成方程 ( Compositing equations )


合成对象 :


1.目标图像 ( Destination Image ) : 先绘制 的图像 是目标图像 ;

image.png

2.源图像 ( Source Image ) : 设置 Xfermod 之后 , 后绘制的图像 是 源图像 ;

image.png

方程中的相关变量说明 :


1.目标图像相关 :

① 目标图像 指定像素位置 的透明度 : α d s t \alpha_{dst}α

dst


 ;

② 目标图像 指定像素位置 的颜色值 : C d s t C_{dst}C

dst


 ;

2.源图像相关 :

① 源图像 指定像素位置 的透明度 : α s r c \alpha_{src}α

src


 ;

② 源图像 指定像素位置 的颜色值 : C s r c C_{src}C

src


 ;

3.合成结果相关 :

① 合成后 指定像素位置 的透明度 : α o u t \alpha_{out}α

out


 ;

② 合成后 指定像素位置 的颜色值 : C o u t C_{out}C

out


 ;

合成方程 :


1.方程来源 : 每一个独立的 透明度合成模式 或者 混合合成模式 都 提供了对应的方程 ;

2.方程作用 : 这些方程用于计算 源图像 与 目标图像 合成结果的 对应像素点的 透明度 和 颜色值 ;



老版本的表示方法


老版本的表示方法 :


1.目标图像相关 : [ D a , D c ] [D_a , D_c][D

a


,D

c


] , 表示该目标图像的透明度和颜色值属性 ;

① 目标图像 指定像素位置 的透明度 : D a D_aD

a


 ;

② 目标图像 指定像素位置 的颜色值 : D c D_cD

c


 ;

2.源图像相关 : [ S a , S c ] [S_a , S_c][S

a


,S

c


] , 表示该源图像的透明度和颜色值属性 ;

① 源图像 指定像素位置 的透明度 : S a S_aS

a


 ;

② 源图像 指定像素位置 的颜色值 : S c S_cS

c


 ;

3.合成结果相关 : [ R a , R c ] [R_a , R_c][R

a


,R

c


] , 表示该合成结果图像的透明度和颜色值属性 ;

① 合成后 指定像素位置 的透明度 : R a R_aR

a


 ;

② 合成后 指定像素位置 的颜色值 : R c R_cR

c


 ;



合成模式 相关 区域


合成区域描述 :


① 集合 S SS 表示 源图像素 不透明区域 ;

② 集合 D DD 表示目标图像像素 不透明区域 ;

③ 集合 R RR 表示绘制结果的不透明区域 ;

④ 集合 A AA 代表全集所有区域 ( 整个框透明 + 不透明所有区域 ) ;

⑤ 集合 S ∩ D S \cap DS∩D 表示 源图像 与 目标图像 不透明区域的交集 ;

⑥ 集合 S ∪ D S \cup DS∪D 表示 源图像 与 目标图像 不透明区域的并集 ;

之后的每个模式都要分析上述某几个区域的 透明度 和 颜色值 ;


目录
相关文章
|
5月前
|
存储 消息中间件 人工智能
【03】AI辅助编程完整的安卓二次商业实战-本地构建运行并且调试-二次开发改注册登陆按钮颜色以及整体资源结构熟悉-优雅草伊凡
【03】AI辅助编程完整的安卓二次商业实战-本地构建运行并且调试-二次开发改注册登陆按钮颜色以及整体资源结构熟悉-优雅草伊凡
210 3
|
9月前
|
API Android开发 开发者
Android颜色渐变动画效果的实现
本文介绍了在Android中实现颜色渐变动画效果的方法,重点讲解了插值器(TypeEvaluator)的使用与自定义。通过Android自带的颜色插值器ArgbEvaluator,可以轻松实现背景色的渐变动画。文章详细分析了ArgbEvaluator的核心代码,并演示了如何利用Color.colorToHSV和Color.HSVToColor方法自定义颜色插值器MyColorEvaluator。最后提供了完整的源码示例,包括ColorGradient视图类和MyColorEvaluator类,帮助开发者更好地理解和应用颜色渐变动画技术。
295 3
|
9月前
|
Android开发
Android护眼模式(argb)
这是一篇关于实现护眼模式的技术文章。通过动态添加一个透明的帧布局(FrameLayout),并设置其不可触碰、不可聚焦,覆盖在应用界面之上。利用 `Color.argb()` 方法设置带有透明度的背景色,提供两种流行护眼色(浅绿和深绿)。开启护眼模式时,为帧布局设置计算好的颜色;关闭时恢复透明。若需全局生效,可在 BaseActivity 中初始化并调用相关方法。此方案简单高效,适合快速集成护眼功能。
369 1
|
9月前
|
Java Android开发
Android背景颜色滑动渐变效果(上下滑动,左右滑动)
本文分享了一种通过ScrollView实现滑动变色效果的简单方法。主要步骤包括:1) 在布局中添加ScrollView并确保内容可滑动;2) 获取屏幕高度;3) 获取控件高度;4) 使用GradientDrawable设置渐变颜色;5) 根据控件与屏幕高度比例动态调整颜色数量。示例代码展示了如何在滑动时根据比例改变背景颜色,实现流畅的视觉效果。
261 0
|
7月前
|
存储 机器学习/深度学习 API
Android API Level 到底是什么?和安卓什么关系?应用发布如何知道自己的版本?优雅草卓伊凡
Android API Level 到底是什么?和安卓什么关系?应用发布如何知道自己的版本?优雅草卓伊凡
1104 31
Android API Level 到底是什么?和安卓什么关系?应用发布如何知道自己的版本?优雅草卓伊凡
|
人工智能 搜索推荐 物联网
Android系统版本演进与未来展望####
本文深入探讨了Android操作系统从诞生至今的发展历程,详细阐述了其关键版本迭代带来的创新特性、用户体验提升及对全球移动生态系统的影响。通过对Android历史版本的回顾与分析,本文旨在揭示其成功背后的驱动力,并展望未来Android可能的发展趋势与面临的挑战,为读者呈现一个既全面又具深度的技术视角。 ####
|
12月前
|
移动开发 安全 Java
Android历史版本与APK文件结构
通过以上内容,您可以全面了解Android的历史版本及其主要特性,同时掌握APK文件的结构和各部分的作用。这些知识对于理解Android应用的开发和发布过程非常重要,也有助于在实际开发中进行高效的应用管理和优化。希望这些内容对您的学习和工作有所帮助。
1276 83
|
10月前
|
Java API 开发工具
Android cmdline-tools版本与最小JDK的关系
总的来说,Android的命令行工具和JDK之间的关系就像是一场舞会,两者需要彼此配合,才能共同创造出美妙的舞蹈。如果选择了不合适的舞伴(即不兼容的版本),可能会导致舞蹈中的步伐混乱,甚至无法完成舞蹈。而即使选择了合适的舞伴,也需要考虑舞伴的舞蹈技巧(即性能和稳定性),才能确保舞蹈的完美表现。因此,选择合适的Android命令行工具和JDK版本,是每一个Android开发者都需要面对的重要决定。
324 13
|
9月前
|
Android开发 开发者
Android自定义view获取attr中自定义颜色的问题
本文针对Android自定义View在布局中设置颜色时遇到的问题进行分析与解决。问题表现为通过`getAttributeIntValue`方法获取颜色时,使用资源引用(如`@color/colorPrimary`)无法正确获取,而直接使用十六进制颜色值(如`#ff0000`)则正常。经过源码分析,发现是属性格式定义及获取方式不当导致。解决方案为将`attrs`文件中颜色属性的格式改为`reference|color`,并使用`TypedArray`的`getColor`方法获取颜色值,确保资源引用和直接颜色值均能正确解析。希望本文能帮助遇到类似问题的开发者。
189 0
|
11月前
|
安全 开发工具 Android开发
【Android Git】Git版本回退方式
在实际操作中,选择合适的版本回退方式,可以有效地管理代码版本,提高开发效率和代码质量。
648 26

热门文章

最新文章