我基本上想将两种颜色添加在一起,就像我要对一个Canvas
对象执行以下操作一样:
canvas.drawPaint(Paint()..color = colorB);
canvas.drawPaint(Paint()..color = colorA);
Run Code Online (Sandbox Code Playgroud)
本质上,我有一个背景颜色colorA
和另一种颜色colorB
。我想要得到combinedColor
的结果是colorA
在画布上绘画colorB
但不使用画布的结果。
我尝试了以下方法,但没有实现:
final combinedColor = colorA + colorB;
Run Code Online (Sandbox Code Playgroud)
例如,如果我想在半透明colorA
和另一种颜色上绘画colorA
,则另一种颜色应充当背景,即就好像它本身具有完全不透明度一样 - 基本上就是您所期望的方式。
我如何将这样的颜色添加在一起?
cre*_*not 23
Color
我碰巧在课堂上找到了一个方法:
Color.alphaBlend
final colorC = Color.alphaBlend(colorA, colorB);
Run Code Online (Sandbox Code Playgroud)
alphaBlend
允许您组合两种颜色,其中第一个参数是前景色,第二个参数是背景色。所以这里colorA
是前景色和colorB
背景色。
operator +
可以通过创建以下代码extension
来使问题中的代码示例正常工作:
extension on Color {
Color operator +(Color other) => Color.alphaBlend(this, other);
}
Run Code Online (Sandbox Code Playgroud)
现在,以下代码将起作用:
final combinedColor = colorA + addendColor;
Run Code Online (Sandbox Code Playgroud)
请注意,我创建扩展的方式,加数(此处addendColor
)将是背景。您可以通过返回(this, other)
到 来更改此设置(other, this)
。
归档时间: |
|
查看次数: |
6296 次 |
最近记录: |