问题标签 [porter-duff]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - android:如何像 Photoshop 一样创建叠加混合?
我正在我的 android 应用程序中实现覆盖混合(如 Photoshop)。我尝试了不同的 PorterDuff.Modes(即 SCREEN、MYLTIPLY 等)与不同的组合,但无法实现完美的叠加效果。有没有办法达到效果?
android - PorterDuff.Mode.MULTIPLY - Android 中这种颜色转换的意义
在默认的 Android 主题下,我有三个自定义彩色按钮
按钮 http://img94.imageshack.us/img94/1723/themew.jpg
当我通过 /values-v11/styles.xml 切换到Theme.Holo
颜色更改为:
http://img710.imageshack.us/img710/1659/themeholo.jpg
正如我所怀疑的,默认按钮的颜色在新的 Holo 主题中发生了更改,并且使用相同的转换参数进行了转换,它给出了意想不到的颜色。我想保留初始颜色。为此,我必须了解PorterDuff.Mode.MULTIPLY的转换规则。我从 Android 文档中得到的只是
这是什么意思?可能,S是源位图的一个点(按钮可绘制 button.getBackground()),而D是我的 customColor 的一个“点”......我怎样才能从这个公式中重现新的变换颜色?这是否意味着新颜色N是:
或者是什么!?
更新: 我想:
btn_default_normal.9.png用于简单 Android 主题中的上述按钮
btn_default_normal_holo_dark.9.png用于 Android Holo 主题
为了解决 Holo 主题下的颜色问题,我想从第二种(Holo)颜色#66999999到第一种颜色#F2E1E1E1进行中间转换:
然后应用我在引入新的 Holo 主题之前使用的相同转换。要计算这种中间颜色,我必须在十六进制系统中求解两个丢番图方程,其中 Na、Nc 在区间 [0, FF] 中,m, n - 是整数:
因此,中间色为#23898989。
不幸的是,实施获得的中间颜色我仍然没有得到想要的颜色......我错在哪里?
android - 如何为透明覆盖创建蒙版?
我有以下场景:一个用作背景的位图和另一个用作覆盖的位图,可以是 50% 透明或不透明(在运行时可更改),第三个位图包含第二个位图的掩码。我尝试了不同的 Xfermodes 配置和绘图顺序,但找不到合适的。
我将掩码用作位图,因为我需要能够在两次程序运行之间或在配置更改之间保存它。它是在用户在屏幕上绘制时创建的,有效地清除了战争迷雾。
最佳尝试的代码片段。唯一没有像我希望的那样起作用的是我的面具的透明度。
Paint
对象:
这是我通过当前配置得到的更清楚的结果:
我不确定我是否能够在 Paint 对象上设置 alpha;如果不是,我不介意针对 alpha 问题的其他建议或解决方案,最好是不需要将位图重新用作战争迷雾的建议或解决方案。
编辑:
通过执行以下操作,我能够得到我想要的结果:
Paint
对象:
但是绘制五次位图似乎是一种浪费。由于 Android 硬件加速,它在 OpenGL 纹理中运行(我将位图重新缩放到设备 GPU 接受的最高分辨率),并且我非常注意invalidates()
它在我的 Nexus S 和我的 A500 上运行得非常流畅,但是我不确定其他设备(无论如何项目将是 4.0+)。
但我相信一定有更好的方法来做到这一点。我想要一种避免过多透支的方法,或者至少可以正确地向我解释那些 Xfermode 的含义并且我没有透支的东西。
android - Android ColorFilter - Porter-Duff 模式
我正在尝试解决 android 的问题ColorFilters
。文档很差,所以主要方法是尝试不同的变体。
问题:
有一个位图。有些像素的 alpha=255,有些像素的 alpha=0。我正在尝试用特定颜色绘制一个圆圈。我希望位图中的 alpha 通道保持不变,但是在绘制时我想将颜色与位图 alpha 相乘。
因此,在绘制圆圈时,我希望不绘制 alpha=0 的像素,但要以我想要的颜色绘制 alpha=255 的像素。Alpha 通道不应该改变。
我正在尝试使用 porter-duff ColorFilter(android sdk 中的 PorterDuffColorFilter 类)。
官方网站上有太多模式和无法理解的描述:http: //developer.android.com/reference/android/graphics/PorterDuff.Mode.html
我想我应该使用DST_ATOP
or SRC_ATOP
,但它们不像我描述的那样工作。
另外,porter-duff colorfilter 的构造函数中有一个奇怪的参数srcColor
。
我不明白公式中的“Sa”和“Sc”是什么意思[Da, Sc * Da + (1 - Sa) * Dc]
。它可以来自传递给颜色过滤器构造函数的颜色,也可以由“paint.setColor”设置颜色。
有谁知道,它是如何工作的?
graphics - 强光,柔光,颜色减淡,颜色燃烧的混合模式公式?
我正在尝试为 CSS 实现穷人的混合模式,以期待浏览器推出支持。(我使用的 CSS 预处理器是 Stylus,这对讨论并不重要。)我从 W3C SVG 规范中找到了混合模式计算的来源,但有些方程给出的结果与预期的结果大不相同 -具体来说,hard-light
、soft-light
、color-dodge
和color-burn
。
有谁知道有关混合模式的更正确、更可靠的公式?我将每种颜色的 RGB 通道与它们的 alpha 相乘。
这是我到目前为止所得到的。 https://github.com/pdaoust/stylus-helpers/blob/master/blend.styl
android - 当背景为黑色时,Android PorterDuff.Mode.CLEAR 无法正常工作
我需要一些关于我正在使用的应用程序的帮助。我正在尝试创建一个绘画应用程序,几天前我注意到了一个问题,现在我决定进行一些研究来解决它。当我使用PorterDuff.Mode.CLEAR
我的刷子作为橡皮擦时,它在我的背景是白色的情况下正常工作。但是,如果我将背景设置为其他颜色(例如 Black like : mCanvas.drawColor(Color.BLACK);
)并且在我使用橡皮擦后,我使用橡皮擦的地方会被涂成白色。这是我为橡皮擦设置变量的方式:
那么有什么想法为什么会发生,我该如何解决这个问题?
提前致谢!
java - Android:PorterDuff.Mode.CLEAR 自定义
使用 PorterDuff.Mode.CLEAR 在 Canvas 上绘图时,移动事件后会留下黑色痕迹。这可以定制吗,例如,我想改变轨迹的宽度和颜色?
c# - PorterDuff.Mode.Multiply 没有按预期工作?黑色背景而不是透明
我对 PorterDuff.Mode.Multiply 有疑问,似乎所有 Alpha 通道都设置为“黑色”。这是预期的吗?在 Photoshop / gimp 等中,效果将透明度留在应有的位置。变暗只留下透明度,但仍将效果应用于具有 RGB 的值,这就是我想要的,但具有乘法的效果。
只是 PorterDuff.Mode.Multiply 导致叠加层出现黑色背景问题。
帮助?:)
这是用于 Android 的 Mono
编辑: DstIn 具有相同的不良影响。(阿尔法是黑色的)
android - 如何使用 Porterduff.mode.overlay
如何使用“覆盖”porterduff 模式?我想要的是类似于 gimp 中的覆盖模式。'Overlay' 列在 porterduff.mode 的文档页面中,但不能使用它。
ps“乘”不是我要找的。
android - 掩蔽(裁剪)帧中的图像
有一个丰富的 UI 应用程序,我想在其中显示像这样复杂形状的图像
现在我想要的是根据蒙版图像裁剪我的图像,实际上图像是动态的,可以从相机或画廊(方形或矩形)导入,我希望该图像适合我的布局框架,如上面
所以只是想知道我是如何做到这一点的?欢迎任何想法/提示
背景框
遮罩
像这样